PyQt4使用Pyinstaller打包问题解决方案

时间:2024-05-31 10:01:37

1.环境:

Pycharm 2019.03 专业版
Python 3.7
Pyqt 4.11.2
Pyinstaller 3.5

本来使用的qt5,后来发现在一些低版本的操作系统上使用会出现问题,所以改用了Pyqt4。用起来,效果差不多。

2.问题及解决方法:

大部分问题都是各种包的版本不匹配,这里说一下遇到的问题。

2.1.打包后出现:参数错误,缺少python3.7.dll

原因:在打包的时候,发现控制台报错信息如下:
PyQt4使用Pyinstaller打包问题解决方案
于是手贱就下载了一个upx.exe文件根据下载提示放在了指定的文件目录下面。

解决办法:删掉这个,不需要下载,这个东西是压缩用的,具体的用法,可以网上查一下,这里不详细说明,没用。

2.2.打包成功,出现dos界面快速的闪退,Failed to execute script pyi_rth_qt4plugins

原因:存在版本不匹配或者包缺失问题

解决办法:

(1)在exe目录下,使用dos命令:./xxx.exe 查看缺失参数,如下图:
PyQt4使用Pyinstaller打包问题解决方案
(2)可以看到缺失了Pyside和sip,然而主要的问题还是failed to execute script pyi_rth_qt4plugins,通过在环境变量里面配置PyQt4的plugins,然后在文件里面引入sip模块,该模块没用到,但是提示没有,我们也下载了,还是导入吧,最终解决。
PyQt4使用Pyinstaller打包问题解决方案
PyQt4使用Pyinstaller打包问题解决方案

2.3.打包成功,出现闪退,报错NO SUCH FILE OR DIRECTORY

PyQt4使用Pyinstaller打包问题解决方案
这是在闪退之前快速截到的内容信息。提示astor这个包里面有问题。

解决办法:调整astor版本,增加相关内容

(1)调整astor版本,astor和打包有关,具体是啥,可以查一下,我使用的是0.7.1.使用0.8.0时报错。
PyQt4使用Pyinstaller打包问题解决方案
(2)增加astor文件
参考博文:astor问题

2.4.启动后,出现Failed to execute script …exe

解决办法:安装上面的步骤排除。最好在dos命令行下面查看错误信息。

2.5.关于打包方法:

方法很多,如果项目比较小,直接打包成一个exe文件即可;项目比较大的时候,最好还是打包成一个文件,因为大项目打包成一个exe文件启动很慢,影响体验。打包成一个文件夹,这有点像网上下载软件的那种绿色版,无需安装即可使用的那种。
(1)小项目:打包成exe
命令:-w -F --icon=myico.ico FileNameFileName
-w表示打包的时候去除dos命名框,不会在启动后弹出dos框,注意是小写的w。,-F表示打包成一个exe文件。–icon是设置一个图标,最后接你的包含mian的项目py文件。
(2)大项目:超过100M的项目,最好打包成一个包含依赖包的文件夹目录,里面有个exe文件,双击即可打开。使用时创建一个快捷方式在桌面上就是。这样启动就很快了。
命令:-D -w --icon=myico.ico FileNameFileName
-D表示创建文件夹,-w是取消启动后弹出dos框。后面和上面一样。

补充:打包常见参数说明:

PyQt4使用Pyinstaller打包问题解决方案

总结:

总共耗时三天,总算把这个打包问题解决了。有些问题中途可能没记住,如果在这些方法里面还有各位博友还有问题,欢迎留言。最后附上需要下载对应版本依赖包的地址:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

点给个赞哦!

参考博文:https://www.it610.com/article/1281534448264822784.htm
https://blog.****.net/weixin_44697140/article/details/106911389