运行PyQt5结合Matplotlib程序报KeyError: 'datapath'如何解决
问题根因
- 你使用的Matplotlib版本高于3.2,
datapath参数早在3.3版本就已经从rcParams配置字典中移除,原功能替换为官方公开APImatplotlib.get_data_path(),用于返回Matplotlib内置资源文件的存储路径。 - 报错行位于你项目中
mplwidget.py的第140行,代码仍在调用已废弃的mpl.rcParams["datapath"],因此抛出KeyError。 - 额外的弃用警告是因为代码中使用了Matplotlib 3.3开始废弃的
_init_toolbar方法,后续版本会彻底删除该方法。
解决方法
方法1:修改适配代码(推荐,兼容新旧版本)
- 打开项目中的
/home/Desktop/Arbeit/image_analyzer_files/imageanalyser/qimageanalyser/mplwidget.py文件 - 定位到第140行,将原有代码:
self.basedir = os.path.join(mpl.rcParams["datapath"], "images")
替换为:
self.basedir = os.path.join(mpl.get_data_path(), "images")
- (可选)修复工具栏弃用警告:将
_init_toolbar方法中的所有业务逻辑移动到Toolbar子类的__init__方法中super调用的末尾执行,仅保留空的_init_toolbar方法用于兼容旧版本Matplotlib:
def _init_toolbar(self): # 留空实现兼容旧版Matplotlib pass
方法2:降级Matplotlib版本(无需修改代码)
如果你不想改动项目代码,直接将Matplotlib降级到3.2.x版本即可正常运行,执行命令:
pip install matplotlib==3.2.2
修改完成后重新运行start.py即可解决报错。
内容的提问来源于stack exchange,提问作者mikanim
相关产品推荐
相关产品推荐

