[Python进阶] Pyinstaller打包问题

5.9 Pyinstaller打包问题

5.9.1 找不到指定的模块

Pyinstaller在进行打包时,会解析打包的Python文件,自动寻找py源文件的依赖模块。但是Pyinstaller解析模块时可能会遗漏某些模块,这个时候就会报错:No Module named xxx。

如果是通过spec打包,则需要在Analysis下--hidden-import中加入遗漏的模块。如果是通过批处理命令打包,则需要添加--hidden-import参数。

5.9.2 动态链接库缺失问题

打包后可能会缺失某些动态链接库,造成执行程序出错,如:

ImportError: DLL load failed: 找不到指定的模块

在打包过程中一般会有与此相关的warning提示(lib not found)无法找到这些动态链接库。例如在32位版本的打包中,可能会出现scipy模块相关的dll文件无法找到。这时就需要在打包的spec文件中指定动态链接库路径,使其关联到打包后的路径中。

binaries=[('C:\Program Files\Python36-32\Lib\site-packages\scipy\extra-dll','.')]

Analysis下的binaries是为打包文件添加二进制文件,缺失的动态链接库可以通过这种方式自动加入到打包路径中。

5.9.3 UnicodeDecodeError

当打包时出现类似错误时:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 122

处理办法:

  • 删除中文注释
  • 在运行Pyinstaller 前先在cmd里输入:chcp 65001
  • 修改Pyinstaller包下的compat.py,根据报错对应的行将out = out.decode(encoding)改为:out = out.decode(encoding, 'replace')

5.9.4 权限问题

通常时在打包时出现的某些文件拒绝访问或没有权限执行某些操作等。解决这个的方法一般有这几个方面:

  • 使用管理员权限运行cmd或其它命令行窗口
  • 关闭杀毒软件
  • 使用完全权限的管理员账户

5.9.5 中文路径

Pyinstaller打包后的路径使用中文没有问题,不过为了减少打包时候出错的可能,尽量将打包使用的资源文件和代码文件路径设置为英文。

5.9.6 打包后的程序无法在其它电脑上运行

64位系统上打包的只能运行于64位系统,不过32位系统上打包的的可以运行于32位和64位系统。

所以exe放到其他电脑上若无法运行的话可以看一下两台电脑的位数是不是相同。

5.9.7 XX文件不存在

通过datas参数添加文件到程序目录中。

5.9.8 动态链接库丢失

无法定位程序输入点 ucrtbase.terminate 于动态链接库 api-ms-win-crt-runtime-l1-1-0.dll

解决方法是,在需要运行的PC上安装:

https://www.microsoft.com/en-us/download/confirmation.aspx?id=48145

5.9.9 AttributeError: module 'enum' has no attribute 'IntFlag'?

因为电脑里安装了enum34这个包 ,这个包与Python自带的enum包冲突了,因此使用uninstall命令将其卸载即可(管理员打开cmd)!

pip uninstall enum34

5.9.10 黑框及去除黑框

5.9.10.1 黑框及其作用

所谓黑框,其实就是命令行窗口。当我们成功打包并运行程序后,黑框中会显示程序输出内容。但是如果程序运行不成功,那黑框中就会显示报错信息,这个对我们非常重要。而有些时候我们程序显示的是一个GUI界面,所以不想要黑框,不然用户会觉得不友好。

在运行程序时,虽然黑框会显示报错信息,但是可能会一闪而过。查看黑框报错信息:

1、使用CMD,通过CD命令进入到主程序所在的文件夹,然后运行:打包.exe命令,这样报错的内容就会显示在当前CMD窗口中了。

2、打开CMD,将主程序拖入到CMD中。

3、在代码中添加os.system('pause')命令

5.9.10.2 去除黑框

去掉黑框其实非常简单,我们只需要打包的时候加上-w命令即可:

Pyinstaller -w belle.py

相关推荐
余生H几秒前
前端Python应用指南(五)用FastAPI快速构建高性能API
前端·python·fastapi
B站计算机毕业设计超人1 小时前
计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价格 预测 机器学习 深度学习 Python爬虫 HDFS集群
大数据·python·机器学习·spark·课程设计·数据可视化·推荐算法
计算机徐师兄1 小时前
Python基于Django的web漏洞挖掘扫描技术的实现与研究(附源码,文档说明)
python·django·漏洞扫描·web漏洞挖掘扫描·python django·python漏洞挖掘扫描技术
m0_748246611 小时前
【论文投稿】Python 网络爬虫:探秘网页数据抓取的奇妙世界
开发语言·爬虫·python
minstbe1 小时前
AI开发 - 算法基础 递归 的概念和入门(二)汉诺塔问题 递归的应用和使用注意 - Python
开发语言·python·算法
web147862107231 小时前
Python毕业设计选题:基于django+vue的疫情数据可视化分析系统
python·信息可视化·课程设计
岁月如歌,青春不败2 小时前
HMSC联合物种分布模型
开发语言·人工智能·python·深度学习·r语言
susu10830189112 小时前
python中Windows系统使用 pywin32 来复制图像到剪贴板,并使用 Selenium 模拟 Ctrl+V 操作
python·selenium
Pocker_Spades_A2 小时前
阿里云-通义灵码:在 PyCharm 中的强大助力(下)
ide·python·阿里云·pycharm
chengxuyuan1213_2 小时前
Python有哪些常用的库
开发语言·python