使用 Pyinstaller 打包包含 pyqt5 库爬虫程序总结

使用 Pyinstaller 打包包含 pyqt5 库爬虫程序总结

python 和 pyinstaller 的安装不再赘述

使用 pyinstaller 的打包基本上使用一个 -F 参数即可,这样就会打包出一个单个可以运行的 exe;如果不指定,会打包出一整个文件夹

1. 碰见的第一个问题:RecursionError 递归报错

参考链接:

https://blog.csdn.net/heruili/article/details/97274443

发生此类异常原因:python默认的递归深度是很有限的(默认是1000),因此当递归深度超过999的样子,就会引发这样的一个异常,而在打包过程中引入的包递归深度可能比默认深度大,因此会引发异常。

pyqt5 这个库的递归深度可能比较深。

添加这个代码即可解决

import sys

sys.setrecursionlimit(1000000) #例如这里设置为一百万

但是打包命令Pyinstaller -F XXX.py ,该在哪里加这部分代码并没有提及,通过大量查找终于发现了解决pyinstaller打包过程中出现该类异常解决的办法:

执行pyinstaller -F XXX.py 它会在你的目录文件生成XXX.spec文件,然后报错,出现该类异常。
打开XXX.spec文件,在开头添加上面两行代码。
继续执行打包,但是还文件名:pyinstaller -F XXX.spec ,执行该文件

2. 打包GUI程序指定 pyqt5 所在路径

参考链接:

https://www.cnblogs.com/DonetRen/p/10405395.html

打开cmd命令窗口,使用cd命令切换到.py文件所在路径,然后使用

pyinstaller --paths C:Users......Python37/Lib/site-packages/PyQt5/Qt/bin -F -w --icon=note.ico main.py

命令进行打包,

其中,–paths用来设置PyQt的环境变量,-F表示生成单个exe可执行文件,-w表示窗体程序,–icon是设置exe的显示图标,main.py是GUI程序的入口

3. 打包完成运行 exe 报错

参考链接:

https://blog.51cto.com/cfy10/2468597?source=dra

提示找不到模块

ModuleNotFoundError: No module named 'pkg_resources.py2_warn'

根据这个博客,问题可能出在各个模块之间版本不对应的情况,按照这个博主给出的配置

Python配置环境的版本。供大家参考
win10_64位 + python 3.6.8_64位 + Pywin32 227 + PyQt5 5.14.1 + opencv-python 3.4.5.20 + setuptools 44.0.0 + PyInstaller 3.6

win10_32位 + python 3.5.4_32位 + Pywin32 227 + PyQt5 5.14.1 + opencv-python 3.4.5.20 + setuptools 44.0.0 + PyInstaller 3.6
以上配置环境python包官网下载,模块均pip install自动安装依赖

对照后,降低 setuptools 的版本,打包成功可以运行

4. 未解决的问题

已经添加上了 -w 参数,不显示黑窗口,但是运行还是显示

在这里插入图片描述

pyinstaller 运行参数
与生成结果有关的参数

参数名 描述 说明
-D 生成one-folder的程序(默认) 生成结果是一个目录,各种第三方依赖、资源和exe同时存储在该目录
-F 生成one-file的程序 生成结果是一个exe文件,所有的第三方依赖、资源和代码均被打包进该exe内
–specpath 指定.spec文件的存储路径 默认:当前目录
-n 生成的.exe文件和.spec的文件名 默认:用户脚本的名称,即main.py和main.spec

Windows和Mac特有的参数

参数名 描述 说明
-c 显示命令行窗口 与-w相反,默认含有此参数
-w 不显示命令行窗口 编写GUI程序时使用此参数有用。
-i 为main.exe指定图标 pyinstaller -i beauty.ico main.py

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值