py文件打包成exe(py文件打包成exe执行出错)

py文件打包成exe(py文件打包成exe执行出错)p 代码环境 Windows11 pycharm2023 2 3 python3 12 用到包 pymzml2 5 2 初学者 p 先按网络教程在虚拟环境中将正常运行的 py 项目打包 mark tool py 是我的主程序

大家好,我是讯享网,很高兴认识大家。



 <p>代码环境&#xff1a;Windows11&#xff0c;pycharm2023.2.3&#xff0c;python3.12&#xff0c;用到包pymzml2.5.2&#xff0c;初学者</p> 

讯享网

先按网络教程在虚拟环境中将正常运行的py项目打包,mark_tool.py是我的主程序。

讯享网

-c参数是运行程序时显示控制台,方便我们调试。运行打包后的程序,控制台随着程序闪退。

为了看到报错信息,使用win+R,cmd运行程序,此时可看到报错


讯享网

这个错误比较常规,通过网络得到解决方案,打包时加入参数--add-binary强制引入缺失文件

 

重新打包,程序正常运行

正常运行后点击某些需要调用pymzml包的功能,闪退报错

因为不熟悉pymzml包的运作原理,直接将报错复制上网搜索,按照这个博文所述引入request模块解决 AttributeError: module 'urllib' has no attribute 'request'-CSDN博客

重新打包运行,报错更新

这个报错我查了很久,都是说dns问题、网络连接问题。但是我写的程序并没有需要联网的地方,查看错误堆栈就是调用pymzml之后进行了联网操作。但是我直接运行py却不会报这个错,我以为是打包过程中又缺失了文件导致它需要去下载,又查了很多打包相关的内容,都不行。终于决定根据堆栈去看看源码到底怎么回事。

根据堆栈打开pymzmlobo.py文件,定位到152行,发现这里确实进行了联网操作

我在浏览器打开这个链接,提示“页面可能存在问题,或者已永久移动到新的网址”。所以,就是这个网址的问题了。我尝试直接将151、152行屏蔽,重新打包。报错更新

这个报错就又是很直白的报错了。程序运行目录下缺少obopsi-ms-1.1.0.obo这个文件,那个网址就是为了下载这个文件的。既然我们py运行没问题,说明我们本地是有这个文件的。不知道是不是也可以强制打包,我是直接将环境目录中的文件拷贝到运行目录中了,这个文件也很好找就在pymzml安装目录里

直接将obo目录拷到exe同级目录,此时再运行程序,可以正常使用啦!

对自己的几点建议:

①遇到不熟悉的报错,在查到错误代码对应的可能问题后,还是要先自己根据错误堆栈,回到源码中去排查问题,每个人遇到的问题不尽相同,不可能完全依赖他人经验来debug

②可以看到,在打包pymzml相关内容时,除了py文件全部没有打包进去,包括第一点中的那个version.txt。是不是有什么更好的方法可以将全部所需的内容都打包进去,有待进一步学习

③虚拟环境是个好文明,虽然我还没有体验到它打包程序能减小体积的优势,但是像这样在其中修改python包就不会影响其他项目了。并且我前不久刚换新电脑,配置环境下载各种模块又是一头包,然而我将原来带有虚拟环境的项目直接拷贝到新电脑上就能用,简直不要太方便

小讯
上一篇 2025-05-25 21:34
下一篇 2025-04-18 12:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/172383.html