python 程序打包(UnicodeDecodeError: 'utf-8' )

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环境打包会小很多

注意:若调用外部程序,注意将其拷贝至exe同级目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值