pyinstaller 打包PyQt5的 *.exe 程序出现"Failed to execute script XXX"问题
由于本人刚接触python,偶然看到用PyQt5做窗口程序,非常有意思。所以跟着bilibili视频学习。想用PyQt5
做出一个最简单简单的窗口登录程序,无奈,入了很多坑
从External Tools 的导入就开始
1.QTdesigner
遇到的问题是,按网络的教程下载,安装;但是在设置program路径时,找不到designer.exe文件。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200712161057861.png#pic_center)
搞了一下午,各种方式,环境变量配置、PyQt5卸载重装多次依旧解决不了,之后终于找到解决办法,
非常感谢这位博主。
https://blog.csdn.net/qq_42258776/article/details/106783308
![提示图片:https://img-blog.csdnimg.cn/20200712165844792.png#pic_center)
方法:网络教程中无此问题,应该是PyQt5版本更新后內部文件做了更改,网络教程是之前的版本。
问题可能出在安装目录里,查看了一下对应的plugins文件夹,将pyqt5_tools\Qt\plugins文件夹进行
了复制,然后覆盖到site-packages\pyqt5_tools\Qt\bin目录下,之后问题解决。
个人也感觉很奇特,折腾了一下午,既然这样解决的。
2.PyUIC
问题是:PyUIC第一个工程可以正常使用,但是新建了一个工程,但是QTdesigner可以用,
生成的 *.ui 文件,但是无法用PyUIC进行翻译。老是提示找不到此文件
后来发现是因为在当初External Tools 设置时,Working directory配置时,与QTdesigner的对应配置
不一样。最后都改成$FileDir$,问题顺利解决。
3.在用pyinstaller 打包出现"Failed to execute script XXX"问题
在cmd中打包时 用命令:pyinstaller -F XXX.py 出现
“ 4703 WARNING: Hidden import "sip" not found!” 的提示警告
打包完成后,我在生成的dist文件中找到 XXX.exe 文件并运行。出现按
"Failed to execute script XXX"对话框。
之前的思路一直是,按安装提示:4703 WARNING: Hidden import “sip” not found! 去找。
从新安装了STP包(pip install STP);一样解决不了。
在主文件中增加
import os
import sipbuild.
if hasattr(sys, ‘frozen’):
os.environ[‘PATH’] = sys.MEIPASS+ “;” + os.environ[‘PATH’]
仍然解决不了。
之后按网友用 pyinstaller 命令中的 -c 命令去打包(即:pyinstaller -c XXX.py),dist中生成的exe文件,
能在控制台中查看错误。我双击XXX.exe,发现
并没有提示错误信息;之后按控制台提示输入 .\demo 运行提示为
但是这有点太奇怪了,说模块中无法找到属性“Ui _ Dialog”;我在文件中定义的明明白白,
在pycharm运行毫无问题,怎么打包成exe,说这个问题。
之后网友提供一个情况可能是重名了,即文件名和程序导入名称相同了
比如:本身文件名为lianxi.py 在此文件中又import lianxi 就会出现这种错误
我检查了以下,我有一个test.py。主文件中名称为demo.py;在demo.py中有import test。
但是我的并没有重名,但是这提供给我一个新的思路。我把test.py换成test1.py。并把
demo.py中导入的名称一样换成test1
问题解决,exe程序正常运行。所以问题出在test命名上。以后值得注意!!