我有点困惑:
我正在使用Python 3.4和py2exe将程序编译为供他人使用的独立程序。我通过pip安装了PyOpenSSL软件包,但未在程序中使用它。在安装PyOpenSSL之后尝试编译程序时,出现maximum recursion depth exceeded in comparison
错误。我一经发布PyOpenSSL软件包,错误就消失了。
我怎样才能解决这个问题?
我知道Python 3.4已过时。我将很快转向Python 3.6。
答案 0 :(得分:0)
当我们进行递归时,存在堆栈溢出的风险,并且在后台运行的Cpython本身不会利用它来优化尾部递归,因此,如果您做得太深,您将朝着堆栈溢出靠近。通常,不同的Cpython / python风味具有不同的递归允许深度,因此,当您使用PyOpenSSL时,它将sys.setrecursionlimit更改(覆盖)为一个更低的值,因此您可以增长的python堆栈变得更加受限。
您可以在此处了解更多信息以及如何更改它(不推荐)。 https://docs.python.org/3/library/sys.html#sys.setrecursionlimit
如果可能的话,将其替换为迭代版本会更好,Python堆栈框架会变得非常大,这对于内存管理例程来说是没有乐趣的。
希望有帮助。