Py2exe - ошибка PyOpenSSL: превышена максимальная глубина рекурсии - PullRequest
0 голосов
/ 31 января 2019

Я немного запутался: я использую Python 3.4 и py2exe, компилируя программу в отдельную программу, которая используется другим человеком.Я установил пакет PyOpenSSL через pip, но не использовал его в программе.Когда я пытался скомпилировать программу после установки PyOpenSSL, я получаю ошибку maximum recursion depth exceeded in comparison.Как только я удалил пакет PyOpenSSL, ошибка исчезла.Как я могу это исправить?Я знаю, что Python 3.4 устарел.Я скоро перейду на Python 3.6.

1 Ответ

0 голосов
/ 31 января 2019

Когда мы переходим к рекурсии, существует риск переполнения стека, и Cpython, работающий под капотом, не берет на себя ответственность за оптимизацию хвостовой рекурсии, поэтому, если вы зайдете слишком глубоко, вы приблизитесь к переполнению стека.,Как правило, разные разновидности Cpython / python имеют разную глубину разрешения рекурсии, поэтому, когда вы используете PyOpenSSL, он меняет (переопределяет) sys.setrecursionlimit на еще более низкое значение, следовательно, стек Python, который вы можете увеличить, становится еще более ограниченным.

Вы можете прочитать немного больше, а также как это изменить (не рекомендуется) здесь.https://docs.python.org/3/library/sys.html#sys.setrecursionlimit

И было бы лучше, если бы вы по возможности заменили его итеративной версией, стековый фрейм Python имеет тенденцию к очень большому росту, что бесполезно для процедур управления памятью.

Надеюсь, чтопомогает.

...