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

    是的没错,项目打包的时候不要和工程文件混为一谈,确实容易出错

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注