Pyinstaller打包报错Failed to execute script pyi_rth_pkgres
Pyinstaller打包项目文件的时候
出现报错
fatal error detected
failed to execute script pyi_rth_pkgres
检测到致命错误
无法执行脚本pyi_rth_pkgres
思来想去,我写的项目并没有用到这个叫做pyi_rth_pkgres的脚本,由于我是使用conda创建的子环境下载的pyinstaller(我才重装过系统),莫非是anaconda中package出现了问题导致这个情况。
先是经过网上大量的说用的方法(实际上一点用都没有)
原理大致就是忽略这个包
pyinstaller --hidden-import pyi_rth_pkgres -w -F C:/kivy_test.py
实际上毫无作用,依旧报错(另一个内容)
尝试重装pyinstaller
pip uninstall pyinstaller
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
依旧毫无作用,报错信息任然一样。
开始排查,发现曾经的打包参数依旧全部保留,有一些路径信息任然还在,于是我在项目文件夹中依次删除了,build/,dist/,及main.spec这三个用于存储打包配置的信息文件。
再度打包,成功
说明pyinstaller创建的配置相关缓存文件并不是每次创建的,是第一次创建,之后直接读取,一旦发生一丁点的环境变化,打包可能就会遇到问题。
PS:
当时网上还找了一些资料
- main return -1
-
这种错误基本都是自己的问题, 只能在输出exe时参数加个’-d’即debug模式, 然后再查下打印的错误信息Failed to execute script pyi_rth_pkgres
-
可以先换Pyinstaller的版本, 这个错误会消失, 但会弹出其他的错误信息, 然并卵这种错误基本都是自己的问题, 只能在输出exe时参数加个’-d’即debug模式, 然后再查下打印的错误信息
Failed to execute script xxxx
-
这种错误基本都是自己的问题, 只能在输出exe时参数加个’-d’即debug模式, 然后再查下打印的错误信息
This application failed to start … Qt platform plugin …
-
这种错误先配下PyQt5的plugins的环境变量, 如博主的是C:\Python34\Lib\site-packages\PyQt5\plugins不行再换Pyinstaller的版本 (貌似3.0.0这个版本有问题, 后来换3.2.1就没事了)
个人建议
实际测试的时候debug模式相对比较难以看懂(我不是专业的测试员),因此关于debug的建议,我选择打包的时候输入 pyinstaller -F main.py 的方式,显示终端(参数-w表示隐藏终端),同时在设计程序的时候灵活使用try-catch以及及时的print信息。
用这个方式打包完成之后,可以使用./main.exe的方式在cmd(terminal)下运行,第一手的错误信息全部在终端上可见(并非使用logging等错误日志类,无法直接启动的程序看不到错误导出)。
2 条评论
nelson · 2020年5月7日 下午3:59
我查看了一下别的博客的解决办法,大都是重新安装pyinstaller,你重装后为解决问题我估计是因为原来生成的spec文件未删除,把原来pyinstaller生成的文件全部删除重新生成应该是没问题的,你最后应该也是这样解决了
Mustenaka · 2020年5月7日 下午10:30
是的没错,项目打包的时候不要和工程文件混为一谈,确实容易出错