python程序打包
pyinstaller -F *.py
pyqt程序文件打包
pyinstaller -w -F xxx.py --hidden-import PyQt5.sip
报错1:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position
需执行 chcp 65001
再次执行pyinstaller指令
报错2:Maximum recursion depth exceeded
这个参考了https://blog.csdn.net/lucytheslayer/article/details/81030840,说是因为递归遍历超过了限制,(但一般是因为你某一步有错,因为我之后把有错的地方解决了就不用加下述代码了)为了看最后生成的exe哪里有错不能运行,需要执行以下操作,以便继续生成exe文件
解决办法:
1.打开生成的xxx.spec文件,把一下代码加进去
import sys
sys.setrecursionlimit(5000)
2.使用命令行
pyinstaller xxx.spec
pyqt程序打包:1文件夹形式,2单独exe形式
第一种打包完成拷贝pyqt platforms到文件夹内即可运行
第二种单独exe生成后即使拷贝platforms依然不能运行
参考https://blog.csdn.net/lynjan/article/details/81560732
大意是:64位操作系统和32位操作方法不一样,64位仅需拷贝platforms文件夹即可
本机64位win7,方法无效;
实在找不到其他类似问题解决办法,尝试其32位下解决办法
解决方案:
在exe同目录下新建plugins文件夹,然后将platfroms文件夹移到新建的文件夹下,同时修改main方法,添加以下代码:
QApplication.addLibraryPath("./plugins")
尝试重新生成exe,解决;
生成exe可在不同电脑上运行;
但是-w生成不带调试窗口的程序能正常打开,但是一点击按钮就崩溃(不打包直接run正常)
暂时无解。。。(如有遇到类似情况的请留言指正)
电脑安装了Anaconda3包管理工具,使用pyinstaller打包exe程序比较大;据说使用纯净的python环境打包会小很多