Py2exe-PyOpenSSL错误:超过最大递归深度

时间:2019-01-31 09:28:35

标签: python-3.4 py2exe

我有点困惑: 我正在使用Python 3.4和py2exe将程序编译为供他人使用的独立程序。我通过pip安装了PyOpenSSL软件包,但未在程序中使用它。在安装PyOpenSSL之后尝试编译程序时,出现maximum recursion depth exceeded in comparison错误。我一经发布PyOpenSSL软件包,错误就消失了。 我怎样才能解决这个问题? 我知道Python 3.4已过时。我将很快转向Python 3.6。

1 个答案:

答案 0 :(得分:0)

当我们进行递归时,存在堆栈溢出的风险,并且在后台运行的Cpython本身不会利用它来优化尾部递归,因此,如果您做得太深,您将朝着堆栈溢出靠近。通常,不同的Cpython / python风味具有不同的递归允许深度,因此,当您使用PyOpenSSL时,它将sys.setrecursionlimit更改(覆盖)为一个更低的值,因此您可以增长的python堆栈变得更加受限。

您可以在此处了解更多信息以及如何更改它(不推荐)。 https://docs.python.org/3/library/sys.html#sys.setrecursionlimit

如果可能的话,将其替换为迭代版本会更好,Python堆栈框架会变得非常大,这对于内存管理例程来说是没有乐趣的。

希望有帮助。