用Qt5做了个带界面的小程序,但是通过pyinstaller封装成exe文件后,程序无法运行,有时候直接报无法运行就退出了,有时候弹出一个提示failed to execute script,退出,在网上查看了很多文章,都没有解决,最后偶然的机会发现了问题的解决方法。
https://blog.youkuaiyun.com/a807296772/article/details/82769835
以上这个链接描述问题和解决方法很清晰,可以参考,主要推荐的是文章中提出的,要注意查看build中warn-xxxx.txt的日志,日志中的信息如果有明显的找不到Qt5等信息,需要重点参考,其他的我的环境中也报了一些,但是不影响。
以往大家遇到的可以通过尝试如下手段解决:
1.确认pyintaller --paths xxx -F -w yyyy.py封装命令中,是否包含了PyQt5的安装路径,例如我的是C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyQt5\Qt\bin,标红部分是目前的固定路径;
2.确认代码中是否有input等交互语句,如果有需要去掉pyintaller 命令中的-w,生成带有终端窗口的交互式窗口程序;
3.代码中的带有路径性质的字符串需要跟实际的匹配,如果使用的相对路径,需要把生成的exe文件跟代码中的资源文件放在相对的路径下,使用绝对路径时,不需要关心相对关系,但是不利于程序在不同设备运行效果;
4.代码中使用了系统不支持的Qt5字库,将字体类型换成默认的Arial类型;
5.其他还有一些pyinstaller安装不对,版本不合适等情况,这个一般使用pip进行安装,环境变量设置正确,不会有太大问题,可以使用pyinstaller封装一个其他简单的例子,如果能运行,应该就没有太大问题;