1、初尝失败
我在pycharm终端下使用pyinstller打包时,报错“With the default recursion limit (1000), the recursion error occurs at about 115 nested imported, with limit 2000 at about 240, with limit 5000 at about 660."。如下图:
于是笔者从网上找到数篇文章大多是说要在**.spec文件中添加如下代码:
import sys
sys.setrecursionlimit(2000)
按上述过程修改后重新在终端使用如下命令进行打包:
pyinstaller main.spec #main.py是准备的主入口程序
经过多次尝试要么错误依旧,要么虽然可以打包成功,但运行时又出现一大堆错误提示,说明打包仍然是失败的。
2、探询究竟
无意间,我在一次重新打包过程中发现如下提示:
发现其中打包的是conda 环境(\envs\python310)而非项目环境(envs\jxdd),我就考虑是不是因为打包的环境与项目环境不一致才造成了打包失败。于是我在conda prompt中使用conda activate jxdd命令激活我的项目环境为当前环境,在pycharm终端中重新打包,但仍然打包的是conda 环境。
通过分析发现我的pycharm 设置中的终端Shell路径为conda prompt所在路径,我将其修改为cmd.exe所在路径,获取方法为:在系统命令行内 敲入:where cmd.exe
C:\Users\ll>where cmd.exe
C:\Windows\System32\cmd.exe
用返回的路径,修改终端shell的路径:
此时,在pycharm终端中进入的即为当前项目的环境了。
3、大功告成
如下图,再次使用pyinstaller 对项目打包,环境与项目环境一致,打包成功,项目也可以正常运行。打包时因为不使用conda基础包,项目最终也不大,打包时也很快就完成了。
这里,打包时要注意环境是否一致这个”坑“。