【踩坑记录】pyinstaller打包pyside2成exe

不得不说pyinstaller坑是真的多,去年打包的时候折磨我一整天,最后弄好了但很烦躁,没做记录,今年又折磨我一整天,一定要把坑记录下来

一.打包命令

pyinstaller ChargeDataTools.py --paths D:\python37\Lib\site-packages\shiboken2 --noconsole --hidden-import PySide2.QtXml --icon="icon.ico"
  • 打包日志提示lib not found: shiboken2.abi3.dll之类的都加–paths D:\python37\Lib\site-packages\shiboken2(去年好像就是这个屎不啃折磨的我)
  • 打开exe文件不带dos窗口就加–noconsole
  • –hidden-import PySide2.QtXml这句一定要加,不管代码里导没导入这个库(刚开始以为代码没用这个库就不用加这句)
  • –icon="icon.ico"加图标要去网上把png格式的图片转成ico格式

二.打包要用开发环境打包(pycharm中的venv),或者用其他环境打包要把库安全了才行,不知道没有pywin32或者pypiwin32行不行,反正网上有人说要安装这两个库,那就安一下呗。

三.打包时日志提示UPX is not available

  1. 去官网下载UPX:https://upx.github.io/
  2. 我下的是这个
    在这里插入图片描述
    3.把upx.exe放进打包环境的python/Scripts下
    【踩坑记录】pyinstaller打包pyside2成exe_第1张图片

四.报错This application failed to start because no Qt platform plugin could be initialized
这个报错困扰了我一整天,其实这个并不是真正的报错信息,当打包命令不加去掉dos窗口的时候你就会看见真正的报错是什么:

qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""

我在网上查了好久,很多帖子都说得是打包之前执行py文件发生的错误(如果你也是执行py文件那可以上网查,全都是)。然而我是打包之后执行exe发生的
解决方法:将pyside2中的platforms文件夹整个复制到打包后的dist中的exe文件同级就可以了
【踩坑记录】pyinstaller打包pyside2成exe_第2张图片

【踩坑记录】pyinstaller打包pyside2成exe_第3张图片
五.打开exe时报错Failed to execute script
原因有很多,我的原因是我用的动态加载ui文件,打包后需要手动把ui文件放进exe同级目录里就好了(还有图标等各种素材也要放进去)

你可能感兴趣的:(疯狂踩坑,exe,pyinstaller,pyside2,pyqt5)