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

自定义matplotlib样式文件导入报错求助:直接运行正常,导入模块时出错

问题原因与修复方案

问题原因

直接运行test.py时,Python的工作目录就是test.py所在的目录,此时mystyle.mplstyle是相对当前工作目录的路径,所以能正常找到。但当通过test2.py导入test模块时,Python的工作目录是你启动test2.py时所在的目录(而非test.py所在的目录),此时test.py里的相对路径会去当前工作目录查找样式文件,自然找不到同目录下的mystyle.mplstyle。

修复方法

方法1:使用模块所在目录的绝对路径(推荐)

修改test.py的代码,通过获取自身文件的绝对路径来拼接样式文件的路径,彻底摆脱工作目录的限制:

import matplotlib.pyplot as plt
import os

# 获取当前test.py文件所在的绝对目录
module_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接样式文件的完整路径
style_file_path = os.path.join(module_dir, 'mystyle.mplstyle')
plt.style.use(style_file_path)

方法2:将样式文件放入matplotlib默认样式库

把mystyle.mplstyle放到matplotlib的默认样式目录中,之后直接通过样式名调用即可:

  1. 运行以下代码找到matplotlib的配置目录:
import matplotlib
print(matplotlib.get_configdir())
  1. 在该目录下找到stylelib文件夹(没有就新建一个),将mystyle.mplstyle放进去。
  2. 修改test.py中的调用代码为:
plt.style.use('mystyle')  # 不需要加.mplstyle后缀

方法3:固定运行时的工作目录

运行test2.py前,先切换到test.py和test2.py所在的目录,再执行脚本。比如在命令行中:

cd /path/to/your/scripts
python test2.py

这种方法依赖运行环境的操作,灵活性较差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:18:33