Максимальная глубина рекурсии превышена с Pyinstaller в Python? - PullRequest
0 голосов
/ 03 июля 2018

Это распространенная проблема с некоторыми библиотеками, такими как pandas. Я прочитал, что решение может быть путем добавления:

import sys
sys.setrecursionlimit(3000) 

в файле setup.py. Где находится этот установочный файл? Я создал файл py и поместил его в каталог, в который я хочу включить exe, но я не знаю, куда мне добавить этот кусок кода?

Также есть это исправление:

hook-pandas.py
hiddenimports = ['pandas._libs.tslibs.timedeltas',
'pandas._libs.tslibs.nattype',
'pandas._libs.tslibs.np_datetime',
'pandas._libs.skiplist']

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

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Вам не нужно добавлять его в какой-либо специальный файл.
Просто добавьте его в текущий файл Python и запустите. Вы можете увидеть разницу, запустив getrecursionlimit() до и после выполнения команды.

import sys
print(sys.getrecursionlimit())   # recursionlimit before 
# 1000
sys.setrecursionlimit(3000) 
print(sys.getrecursionlimit())    # recursionlimit after 
# 3000
0 голосов
/ 26 октября 2018

Для меня это сработало, просто добавив следующие строки в начале .spec-файла, который создает pyinstaller:

import sys
sys.setrecursionlimit(2000)
0 голосов
/ 03 июля 2018
Файлы

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

Все, что вам нужно сделать, это добавить эти строки в верхнюю часть вашего файла setup.py перед любым другим импортом (который может в конечном итоге быть обработан обезьяной Pyinstaller, вызывая проблему).

...