pyinstaller递归错误:超过最大递归深度。

5
我正在尝试使用 pyinstaller 将 .py 转换为 .exe。当我输入 pyinstaller my_code.py 后,一切似乎都在工作,并且几分钟后进程停止并出现递归错误。我已经尝试在同一文件夹中创建 my_code.spec 文件,编辑它并更改递归次数,但是当我运行 pyinstaller 时,显然会创建一个新的 .spec 文件,因为我无法找到先前添加到 my_code.spec 文件中的 sys.setrecursionlimit() 命令。我是从 Anaconda 命令提示符而不是命令行运行所有上述操作,但我认为这不是问题,因为我已经尝试将一个简单的“Hello World”脚本转换为 .exe 并且完美运作。我已经安装了 Python 3.6.3。

我的代码文件(my_code.py)里面有什么内容? - DarthVlader
2
my_code.py 是我想要转换为 .exe 的 Python 代码。不过我已经解决了这个问题。 当我运行 pyinstaller my_code.py 时,我立即使用 ctrl+c 停止运行。然后我编辑了创建的 .spec 文件,加入以下内容: import sys sys.setrecursionlimit(1000) 最后,在控制台上运行 pyinstaller my_code.spec。 - Xristos Timplalexis
3个回答

6
请查看此链接:https://github.com/pyinstaller/pyinstaller/issues/2919 问题出在Python 3.6上,大多数问题可以通过降级到Python 3.5并使用pyinstaller来解决。
如果您使用的是anaconda3,则可以通过打开命令提示符并运行以下命令来完成:
conda update conda

接下来运行:

conda install python=3.5

但是链接中显示的错误是关于最大递归深度的,而我实际上并没有遇到这个问题。但你仍然认为使用Py 3.5更好吗?谢谢。 - tim
1
Pyinstaller现在应该可以与Python 3.5-3.7一起正常工作了。我在最近的3.7版本中没有看到这个问题。 - alphabet5

2

如果想要制作可执行的Python文件,最好建立一个不同的环境。这个环境应该适用于您的可执行编译器更好的Python版本。通常来说,Python版本越旧,编译就越容易。


0

Alphabet5建议的方法对我来说花费的时间太长了,我想找另一种方法。

我做的是在Anaconda Navigator中为Python3.5创建了另一个环境。然后,我激活了Python3.5环境(例如py35):

conda activate py35

然后,我安装了必要的库,如pyqt5pyqtgraphpyinstaller等,因为py35是一个新创建的环境。

当我运行pyinstaller时,并没有出现任何错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接