Python Qt5封装成exe文件pyinstaller failed to execute script无法运行的问题

用Qt5做了个带界面的小程序,但是通过pyinstaller封装成exe文件后,程序无法运行,有时候直接报无法运行就退出了,有时候弹出一个提示failed to execute script,退出,在网上查看了很多文章,都没有解决,最后偶然的机会发现了问题的解决方法。

https://blog.csdn.net/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封装一个其他简单的例子,如果能运行,应该就没有太大问题;

 

我尝试了以上方法,都无法解决问题,exe文件仍然无法运行,偶然发现有一版exe可以使用,对比了封装编译语句,发现报了upx invalid。

尝试把编译路径中的upx.exe重命名后,程序可以正常使用了,在网上找了写文章,没有直接相关的解释,有博主说upx不能压缩platform.dll等文件,容易造成程序无法运行,具体原因之后有时间需要确认下,有遇到相同问题的小伙伴可以尝试下这个方法能不能解决问题,有知道原因的也希望不吝赐教。

你可能感兴趣的:(Python)