py2exe `ImportError: No module named backend_tkagg`

∥☆過路亽.° 提交于 2019-12-22 04:09:48

问题


I am trying to make a windows executable from a python script that uses matplotlib and it seems that I am getting a common error.

File "run.py", line 29, in import matplotlib.pyplot as plt File "matplotlib\pyplot.pyc", line 95, in File "matplotlib\backends__init__.pyc", line 25, in pylab_setup ImportError: No module named backend_tkagg

The problem is that I didn't found a solution while googling all over the internet.

Here is my setup.py

from distutils.core import setup
import matplotlib
import py2exe 
matplotlib.use('TkAgg')
setup(data_files=matplotlib.get_py2exe_datafiles(),console=['run.py'])

回答1:


First, the easy question, is that backend installed? On my Fedora system I had to install it separately from the base matplotlib.

At a Python console can you:

>>> import matplotlib.backends.backend_tkagg

If that works, then force py2exe to include it. In your config:

opts = {
  'py2exe': { "includes" : ["matplotlib.backends.backend_tkagg"] }
}



回答2:


If you are using py2exe it doesn't handle .egg formatted Python modules. If you used easy_install to install the trouble module then you might only have the .egg version. See the py2exe site for more info on how to fix it.

http://www.py2exe.org/index.cgi/ExeWithEggs




回答3:


This works well

from distutils.core import setup import py2exe, sys, os import matplotlib

sys.setrecursionlimit(12000) sys.argv.append('py2exe')

setup( options = { "py2exe" : { "bundle_files":3, "compressed":True, "includes" : ["matplotlib.backends.backend_tkagg"] } }, windows = [{"script": "script.py"}],

zipfile = None,

data_files=matplotlib data_files = matplotlib.get_py2exe_datafiles(), )




回答4:


Run the following command to install the backend_tkagg

For centos -- sudo yum install python-matplotlib-tk

This should work.



来源:https://stackoverflow.com/questions/8765568/py2exe-importerror-no-module-named-backend-tkagg

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!