You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将含Matplotlib的Kivy程序打包为.exe时遇ModuleNotFoundError求助

解决PyInstaller打包Kivy+Matplotlib应用时的ModuleNotFoundError: No module named 'kivy.garden.matplotlib.backend_kivyagg'问题

针对你遇到的打包报错问题,以下是几个可行的解决方案:

1. 手动添加kivy.garden.matplotlib的源码文件到打包资源

PyInstaller对.pyc文件的识别可能存在问题,即便dist目录中有该文件,运行时仍无法正确加载模块。你需要将kivy.garden.matplotlib的源码文件(.py)手动加入打包配置:

  1. 找到你的Python环境中kivy.garden.matplotlib的安装路径,通常位于Lib\site-packages\kivy\garden\matplotlib。
  2. 修改main.spec中的Analysis部分,添加Tree来包含整个模块目录:
a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[Tree("C:/path/to/site-packages/kivy/garden/matplotlib/", prefix="kivy/garden/matplotlib")],
    hiddenimports=['kivy.garden.matplotlib.backend_kivyagg'],
    # 其他参数保持不变
)

或者单独添加关键的backend_kivyagg.py文件:

a.datas += [("kivy/garden/matplotlib/backend_kivyagg.py", "C:/path/to/site-packages/kivy/garden/matplotlib/backend_kivyagg.py", "PYSOURCE")]

2. 扩展hiddenimports范围

仅添加单个子模块可能不够,尝试将整个kivy.garden.matplotlib模块加入hiddenimports:

hiddenimports=['kivy.garden.matplotlib', 'kivy.garden.matplotlib.backend_kivyagg'],

3. 重新安装kivy-garden.matplotlib(使用garden命令而非pip)

你当前使用的是kivy-garden.matplotlib==0.1.1.dev0开发版本,可能存在路径结构问题。尝试用官方garden命令重新安装:

garden install matplotlib

安装完成后确认site-packages/kivy/garden/matplotlib目录下存在__init__.py、backend_kivyagg.py等完整源码文件,再重新打包。

4. 切换使用kivy-matplotlib-widget替代直接导入garden模块

你已安装kivy-matplotlib-widget==0.6.1,可以尝试使用该库的封装来替代直接导入kivy.garden.matplotlib:
将代码中的:

from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg

替换为:

from kivy_matplotlib_widget import MatplotlibFigure

调整对应的绘图代码后重新打包,该库的结构更易被PyInstaller识别。


内容的提问来源于stack exchange,提问作者user22865895

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:43:11