ImportError: aucun module nommé mpl_toolkits avec maptlotlib 1.3.0 et py2exe
Je ne peux pas comprendre comment être en mesure de package via py2exe maintenant:
Je suis en cours d'exécution de la commande:
python setup2.py py2exe
via python 2.7.5 et matplotlib 1.3.0 et py2exe 0.6.9 et 0.6.10 dev
Cette travaillé avec matplotlib 1.2.x
J'ai lu http://www.py2exe.org/index.cgi/ExeWithEggs et a essayé de mettre en œuvre les suggestions pour le traitement de la mpl_toolkits depuis c'est devenu un espace de noms de package.
Je vais essayer d'obtenir une réponse ici: http://matplotlib.1069221.n5.nabble.com/1-3-0-and-py2exe-regression-td41723.html
L'ajout d'un vide __init__.py
à mpl_toolkits fait que cela fonctionne, mais ce n'est qu'une solution de contournement du problème.
Quelqu'un peut-il suggérer ce que j'ai besoin de faire py2exe travailler avec mpl_toolkits.axes_grid1 dans matplotlib 1.3.0 ?:
test_mpl.py est:
from mpl_toolkits.axes_grid1 import make_axes_locatable, axes_size
if __name__ == '__main__':
print make_axes_locatable, axes_size
setup2.py est:
import py2exe
import distutils.sysconfig
from distutils.core import setup
# attempts to get it to work
import modulefinder
import matplotlib
import mpl_toolkits.axes_grid1
__import__('pkg_resources').declare_namespace("mpl_toolkits")
__import__('pkg_resources').declare_namespace("mpl_toolkits.axes_grid1")
modulefinder.AddPackagePath("mpl_toolkits", matplotlib.__path__[0])
modulefinder.AddPackagePath("mpl_toolkits.axes_grid1", mpl_toolkits.axes_grid1.__path__[0])
# end of attempts to get it to work
options={'py2exe': {'packages' : ['matplotlib', 'mpl_toolkits.axes_grid1', 'pylab', 'zmq'],
'includes': ['zmq', 'six'],
'excludes': ['_gdk', '_gtk', '_gtkagg', '_tkagg', 'PyQt4.uic.port_v3', 'Tkconstants', 'Tkinter', 'tcl'],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll',
'libgobject-2.0-0.dll',
'tcl85.dll',
'tk85.dll'],
'skip_archive': True },}
setup(console=['test_mpl.py'], options=options)
de sortie est:
running py2exe
*** searching for required modules ***
Traceback (most recent call last):
File "setup2.py", line 23, in <module>
setup(console=['test_mpl.py'], options=options)
File "C:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run
self._run()
File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 296, in _run
self.find_needed_modules(mf, required_files, required_modules)
File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 1308, in find_needed_modules
mf.import_hook(f)
File "C:\Python27\lib\site-packages\py2exe\mf.py", line 719, in import_hook
return Base.import_hook(self,name,caller,fromlist,level)
File "C:\Python27\lib\site-packages\py2exe\mf.py", line 136, in import_hook
q, tail = self.find_head_package(parent, name)
File "C:\Python27\lib\site-packages\py2exe\mf.py", line 204, in find_head_package
raise ImportError, "No module named " + qname
ImportError: No module named mpl_toolkits
source d'informationauteur RuiDC
Vous devez vous connecter pour publier un commentaire.
Il est assez simple solution de contournement pour ce problème. Trouver le répertoire à partir duquel mpl_tools est importé et simplement ajouter un fichier texte vide nommé
__init__.py
dans ce répertoire. py2exe trouverez maintenant et inclure ce module sans les importations nécessaires dans le fichier de configuration.Vous pouvez trouver le mpl_tools répertoire en tapant la commande suivante dans une console python:
J'ai trouvé la solution ici https://stackoverflow.com/a/11632115/2166823 et il semble s'appliquer à l'espace de noms de paquets en général.
Ce problème m'est arrivé après que j'ai mise à jour de MacOS à la Sierra de El Capitan.
résolu mon problème.
Cette page https://github.com/JuliaPy/PyPlot.jl/issues/294 peut vous aider.
La plupart des dossiers dans le site-packages du répertoire d'installation de Python sont des packages (ils ont un __init__.py fichier). Si il n'y a pas de __init__.py fichier, puis le paquet est appelé un espace de noms de package. cx_Freeze a une option pour indiquer que mpl_toolkits est un espace de noms de paquet, de sorte que le sous-paquets peuvent être trouvés.