使用pyinstaller打包发布Qt5项目时遇到的一些问题

关键词

pyinstaller 打包发布 PyQt5项目

打包发布所需环境

1.安装pip
2.安装pyinstaller
3.安装pywin32

详见此文:安装pyinstaller打包发布所需环境

打包命令

pyinstaller -F main.py

其中-F为参数,还有一些其他参数,比如:(具体还可以看看这篇文章:Python项目打包发布方法
-F 表示生成单个可执行文件exe(也就是说把所有的依赖包都整合在一起,最后只是得到一个exe文件)
-w 表示去掉控制台窗口,主要针对GUI界面,如果是命令行程序就不需要。可以参考这篇文章:pyinstaller打包发布PyQt5项目遇到的小问题–软件运行有黑框
-i 表示可执行文件的图标 (可以参考这篇文章:pyinstaller打包发布PyQt5项目遇到的小问题–软件运行有黑框 更改打包后的exe图标

问题

打包失败,exe还没有或还不能运行

1.maximum recursion depth exceeded

RecursionError: maximum recursion depth exceeded

意思是:超过最大递归深度
解决:
打包之后会生成一个以spec为后缀的文件,用记事本打开它,在该文件的第二行处添加以下代码

import sys
sys.setrecursionlimit(5000)

然后用pyinstaller打包该spec文件(注意不是原来那个py文件!!)
//这个main.spec请使用自己的文件名

pyinstaller main.spec

 
 
补充
看错误的时候一般只看最后的error(红框部分),不用看蓝框部分(个人猜测,这是命令执行时文件的递归路径)
在这里插入图片描述
 
 
2.编码问题

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 115: invalid continuation byte

cmd中先输入

chcp 65001

再用pyinstaller命令再打包一次

pyinstaller main.py

 
打包成功
在这里插入图片描述

 
3.运行exe闪退
1)查看错误信息
在exe所在目录下,点击地址栏,输入cmd,输入命令:.\main.exe,回车运行就可以看到错误信息
在这里插入图片描述
在这里插入图片描述

2)根据错误信息进行修改
这里提示我[33360] Failed to execute script label_image就是说它运行不了label_image.py脚本文件,蓝框中提示找不到文件夹astor下的VERSION文件,用everything找一下astor
在这里插入图片描述
在这里插入图片描述

补充:
此篇文章介绍的方法,对于我而言,无效。将python脚本文件打包,并解决解决python脚本运行一闪而逝的问题。
他的方法是在py文件中添加

import os
os.system(“pause”)

下图这个是python语法问题(缩进)由于是注释,删掉就行了
在这里插入图片描述

打开其所在路径,将该文件复制过去(到exe文件的同级目录下)
我直接把整个astor复制过去
在这里插入图片描述
 

打包成功,exe可以运行,但有一些错误

4. Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

finished with exit code -1073740791 (0xC0000409)

先说明:我之前是可以运行的,但是突然有几次就不能运行,除了以上的错误。我这个软件是调用深度学习的。有时候他甚至会报:(即cuDNN没有初始化成功什么的)

UnknownError (see above for traceback): Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
         [[node import/conv/Conv2D (defined at scripts\label_image.py:36) ]]
         [[node import/final_result (defined at scripts\label_image.py:36) ]]

[37692] Failed to execute script label_image

在这里插入图片描述
一开始不明白,看到这个博主说:“显卡内存不足”,一想,还真有可能,当时电脑运行了很多个软件,卡卡的,尤其是浏览器,开了很多页面。
 

解决:
修改被调用的py文件,添加以下代码,重新打包运行

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

如果还是不行,重启电脑,不要开太多软件,让电脑休息一下就好了。
 
 

写在后面

该软件是用Qt(C++)完成界面,python完成深度学习部分,打包发布太多坑。
看到有人说Qt打包tensorflow很多问题,现在已经弃坑。改用PyQt5,最终打包成功。(有了Qt的基础,学习PyQt5上手很快,强烈推荐。)
 
 

参考文章

安装pyinstaller打包发布所需环境
Python打包方法——Pyinstaller
Python项目打包发布方法
pyinstaller打包发布PyQt5项目遇到的小问题–软件运行有黑框 更改打包后的exe图标
pyqt5程序打包成exe文件的步骤和遇到的坑,以及如何更改exe的图标
Pyinstaller打包出现UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 解决方案
pyinstaller打包exe文件闪退解决方案
finished with exit code -1073740791 (0xC0000409)解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值