py2exe `ImportError: 找不到模块 backend_tkagg`

9 投票
4 回答
10587 浏览
提问于 2025-04-17 09:42

我正在尝试把一个使用了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 个回答

0

这个代码运行得很好

首先,我们从一个叫做distutils的库里引入了setup这个功能,然后导入了py2exe、sys和os这几个模块,还有matplotlib这个库。

接着,我们把递归的限制设置为12000,这样可以让程序在调用自己时可以更深层次地运行。然后,我们在命令行参数中添加了'py2exe',这是为了告诉程序我们要使用py2exe这个工具。

然后,我们开始设置程序的打包选项,具体如下:

  • 在选项中,我们告诉py2exe要打包3个文件,并且要压缩这些文件。
  • 我们还指定了要包含的内容,这里是matplotlib的一个特定部分,叫做backend_tkagg。

接下来,我们定义了一个窗口程序,它的主脚本是"script.py"。

zipfile = None,

最后,我们获取matplotlib需要的数据文件,并把它们放到data_files里。

2

如果你在使用 py2exe 这个工具,它不能处理 .egg 格式的 Python 模块。如果你是用 easy_install 来安装出现问题的模块,那么你可能只得到了 .egg 版本。想要了解如何解决这个问题,可以去 py2exe 的网站看看。

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

5

首先,简单的问题是,后端安装好了吗?在我的Fedora系统上,我需要单独安装它,而不是跟matplotlib一起安装。

在Python控制台里,你能这样做吗:

>>> import matplotlib.backends.backend_tkagg

如果这样可以运行,那么就强制py2exe把它包含进去。在你的配置文件里:

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

撰写回答