如何设置matplotlib的data path?PyInstaller打包后GTK工具栏图标丢失如何解决
matplotlib数据路径来源及PyInstaller打包GTK后端图标丢失解决方案
matplotlib.get_data_path()路径来源
该路径是matplotlib初始化时按优先级顺序匹配生成,不会直接出现在你打印的默认系统环境变量列表中,匹配优先级如下:
- 优先读取当前运行环境中设置的MATPLOTLIBDATA环境变量的值作为数据路径
- 若没有设置该环境变量,默认读取matplotlib安装目录下的
mpl-data文件夹路径 - 若以上两者均匹配失败,会回退到matplotlib编译/打包时预设的系统级默认路径
数据路径修改方法
matplotlib没有提供公开的set_data_path()接口,可通过以下两种方式修改:
- 导入matplotlib前设置MATPLOTLIBDATA环境变量,该方式优先级最高
import os os.environ['MATPLOTLIBDATA'] = "/自定义/mpl-data/文件夹路径" import matplotlib
- 导入后直接修改运行时配置参数:
import matplotlib matplotlib.rcParams['datapath'] = "/自定义/mpl-data/文件夹路径"
PyInstaller打包后GTK后端工具栏图标丢失解决方案
按以下步骤配置即可解决:
- 首先找到你本地Python环境中matplotlib对应的
mpl-data文件夹,工具栏所有图标均存放在该文件夹下的images子目录中 - 修改PyInstaller的打包spec文件,在
datas配置项中添加整个mpl-data文件夹的打包规则,将其打包到程序运行的临时目录下:
a = Analysis( ["你的主脚本文件名.py"], datas=[ ("/本地/mpl-data/的绝对路径/*", "mpl-data/"), ], # 其余原有配置保持不变 )
- 在你的主脚本最开头,导入任何matplotlib相关模块前,添加适配PyInstaller运行环境的路径配置:
import os import sys # 识别PyInstaller打包后的运行临时目录 if hasattr(sys, "_MEIPASS"): os.environ["MATPLOTLIBDATA"] = os.path.join(sys._MEIPASS, "mpl-data") # 之后再导入matplotlib import matplotlib
- 额外适配GTK后端:如果配置后仍然无法显示图标,需要确认打包时同步包含了GTK依赖的默认图标主题文件,避免GTK渲染组件本身找不到图标资源。
内容的提问来源于stack exchange,提问作者Leigh K
相关产品推荐
相关产品推荐

