py2exe `ImportError: 找不到模块 backend_tkagg`
我正在尝试把一个使用了matplotlib的Python脚本做成Windows可执行文件,但似乎遇到了一个常见的错误。
错误信息是这样的:“在 run.py 的第29行,导入 matplotlib.pyplot 时出错,具体是在 matplotlib\pyplot.pyc 的第95行,接着在 matplotlib\backends__init__.pyc 的第25行,出现了 ImportError: 没有名为 backend_tkagg 的模块。”
我在网上搜索了很久,但没有找到解决办法。
这是我的 setup.py
文件。
from distutils.core import setup
import matplotlib
import py2exe
matplotlib.use('TkAgg')
setup(data_files=matplotlib.get_py2exe_datafiles(),console=['run.py'])
4 个回答
这个代码运行得很好
首先,我们从一个叫做distutils的库里引入了setup这个功能,然后导入了py2exe、sys和os这几个模块,还有matplotlib这个库。
接着,我们把递归的限制设置为12000,这样可以让程序在调用自己时可以更深层次地运行。然后,我们在命令行参数中添加了'py2exe',这是为了告诉程序我们要使用py2exe这个工具。
然后,我们开始设置程序的打包选项,具体如下:
- 在选项中,我们告诉py2exe要打包3个文件,并且要压缩这些文件。
- 我们还指定了要包含的内容,这里是matplotlib的一个特定部分,叫做backend_tkagg。
接下来,我们定义了一个窗口程序,它的主脚本是"script.py"。
zipfile = None,
最后,我们获取matplotlib需要的数据文件,并把它们放到data_files里。
如果你在使用 py2exe 这个工具,它不能处理 .egg 格式的 Python 模块。如果你是用 easy_install 来安装出现问题的模块,那么你可能只得到了 .egg 版本。想要了解如何解决这个问题,可以去 py2exe 的网站看看。
首先,简单的问题是,后端安装好了吗?在我的Fedora系统上,我需要单独安装它,而不是跟matplotlib一起安装。
在Python控制台里,你能这样做吗:
>>> import matplotlib.backends.backend_tkagg
如果这样可以运行,那么就强制py2exe把它包含进去。在你的配置文件里:
opts = {
'py2exe': { "includes" : ["matplotlib.backends.backend_tkagg"] }
}