J'essaie de créer un fichier .exe à partir d'un script en utilisant py2exe (WinPython 3.4.4 sous Windows 7). Dans ce script j'utilise différents backends du paquet matplotlib (Version 1.5.2). Toutes mes tentatives ont donné l'erreur:Erreur d'importation relative/profondeur de récursivité maximale dépassée avec py2exe en utilisant 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
Avec d'autres paquets, qui sont sur le même niveau de répertoire que matplotlib, il n'y a pas de problème. J'ai lu tous les messages concernant ce sujet, mais je n'ai pas encore trouvé de solution (y compris pyinstaller). Quelqu'un peut-il m'aider?
"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(),
)
MISE À JOUR je maintenant installé version matplotlib 2.0.0. J'importe les paquets dans mon script avec
from matplotlib import pyplot, dates
from matplotlib.backends.backend_pdf import PdfPages
from matplotlib.ticker import MaxNLocator
L'exécution du script dans spyder fonctionne bien. Le message d'erreur lors de l'utilisation de py2exe est maintenant remplacé par:
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
qui est exactement ce que je l'ai fait et ce qui fonctionne sans utiliser matplotlib. L'exécution de script.py dans spyder fonctionne également (à partir de pplplot d'importation matplotlib, dates de matplotlib.backends.backend_pdf import PdfPages de matplotlib.ticker import MaxNLocator). Mais quand j'utilise py2exe, la compilation échoue. – kujone