关于Matplotlib字体缓存构建警告及1.5.1版本问题的咨询
解决Matplotlib 1.5.1的字体缓存构建警告问题
这个警告其实是Matplotlib首次运行时的正常小状况,尤其是1.5.1这类老版本,下面给你几个实用的处理办法:
1. 首次运行后自动消失
这个UserWarning只是在告诉你:Matplotlib正在通过fc-list工具扫描系统字体并构建缓存。第一次运行完成后,后续再执行Matplotlib代码就不会再弹出这个警告了。缓存会存在本地目录(比如Linux下的~/.cache/matplotlib,Windows下的AppData\Local\Matplotlib\Cache),之后直接调用缓存就行,速度会快很多。
2. 手动预生成字体缓存
如果你不想等第一次运行代码时的延迟,可以手动触发缓存构建:
打开终端/命令提示符,执行以下命令:
python -c "import matplotlib.pyplot as plt; plt.plot([1,2,3])"
运行完这个命令后,字体缓存就已经生成好了,之后再运行你的业务代码就不会看到这个警告了。
3. 临时禁用警告(不推荐)
如果实在不想看到这个提示,可以在代码开头添加警告过滤或者指定默认字体:
方式一:过滤特定警告
import warnings # 过滤Matplotlib的字体缓存UserWarning warnings.filterwarnings("ignore", category=UserWarning, module="matplotlib") import matplotlib.pyplot as plt # 你的绘图代码...
方式二:指定默认字体,减少字体扫描
import matplotlib # 指定一个系统已有的字体作为默认,避免Matplotlib扫描所有字体 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 中文环境推荐用这个,英文环境可以用'Arial' matplotlib.rcParams['axes.unicode_minus'] = False # 顺便解决负号显示异常问题 import matplotlib.pyplot as plt # 你的绘图代码...
⚠️ 注意:禁用警告只是隐藏提示,并没有跳过缓存构建的过程,还是推荐前两种方法更稳妥。
4. 升级Matplotlib(长期解决方案)
1.5.1是比较老旧的版本了,后续的Matplotlib版本(比如2.x及以上)在字体缓存机制上做了优化,不仅能减少这类警告,还能提升字体加载速度和兼容性。如果你的代码兼容新版本,可以用pip升级:
pip install --upgrade matplotlib
升级前建议备份代码,或者在虚拟环境中操作,避免影响现有项目的稳定性。
内容的提问来源于stack exchange,提问作者MMReza




