Я пытаюсь создать .exe-файл из скрипта с помощью py2exe (WinPython 3.4.4 в Windows 7). В этом скрипте я использую разные бэкэнды пакета matplotlib (версия 1.5.2). Все мои попытки привели с ошибкой:Ошибка относительного импорта/максимальная глубина рекурсии с py2exe с использованием matplotlib
... name = self._resolve_name(name, package, level) File "M:\Python\WinPython-32bit-3.4.4.4Qt5b1\python-3.4.4\lib\site-packages\py2exe\mf3.py", line 213, in _resolve_name raise ValueError('attempted relative import beyond top-level package') ValueError: attempted relative import beyond top-level package
С другими пакетами, которые находятся на одной и той же директории уровня как Matplotlib, нет никаких проблем. Я прочитал все сообщения, касающиеся этой темы, но пока не смог найти решение (включая pyinstaller). Кто-нибудь может мне помочь?
"setup.py":
from distutils.core import setup
import py2exe
import matplotlib
setup(console=['skript.py'],
options={
"py2exe":{
"packages": ['matplotlib.pyplot','matplotlib.backends.backend_pdf'], # List of all the modules you want to import
}
},
data_files=matplotlib.get_py2exe_datafiles(),
)
UPDATE теперь я установил Matplotlib версию 2.0.0. Я импортирую пакеты в свой скрипт с
from matplotlib import pyplot, dates
from matplotlib.backends.backend_pdf import PdfPages
from matplotlib.ticker import MaxNLocator
Запуск скрипта в шпионере работает хорошо. Сообщение об ошибке при использовании py2exe теперь изменилось на:
File "M:\Python\WinPython-32bit-3.4.4.4Qt5b1\python-3.4.4\lib\site-packages\py2exe\hooks.py", line 291, in getattr self.__finder.safe_import_hook(renamed, caller=self) RuntimeError: maximum recursion depth exceeded
То есть именно то, что я сделал и что работает без использования matplotlib. Запуск скрипта.py в spyder также работает (из matplotlib import pyplot, даты из matplotlib.backends.backend_pdf импортировать PdfPages из matplotlib.ticker import MaxNLocator). Но когда я использую py2exe, компиляция терпит неудачу. – kujone