Mac运行Python脚本报错:Unable to revert mtime: /Library/Fonts
解决Mac上Python脚本弹出“Unable to revert mtime: /Library/Fonts”的问题
这个错误我之前帮朋友排查过,本质是matplotlib访问系统字体目录时的权限问题——Mac的/Library/Fonts是系统级目录,普通用户没有修改文件修改时间(mtime)的权限,而matplotlib在加载字体缓存时会尝试操作这个目录,就抛出了这个报错。
给你几个实用的解决方案,按推荐程度排序:
方案1:修改matplotlib的字体缓存路径到用户目录
这是最彻底的解决办法,让matplotlib把字体缓存存在你有权限的用户目录下,不会再碰系统目录。
步骤:
- 先在终端创建用户目录下的缓存文件夹(如果不存在的话):
mkdir -p ~/.matplotlib/font_cache - 然后在你的Python脚本最开头添加这段代码:
import os import matplotlib # 把字体缓存路径设为用户主目录下的文件夹 matplotlib.rcParams['font.cache_path'] = os.path.expanduser('~/.matplotlib/font_cache') # 后面是你原来的代码 from plotly import graph_objs as go import matplotlib.pyplot as plt import numpy as np import json import datetime with open('ELIX.json') as json_file: data = json.load(json_file)
方案2:临时屏蔽警告
如果只是不想看到这个报错,不关心缓存的问题,可以直接过滤这个特定警告:
在脚本开头添加:
import warnings # 过滤掉"Unable to revert mtime"相关的警告 warnings.filterwarnings("ignore", category=UserWarning, message="Unable to revert mtime*") # 后续代码不变
方案3:用虚拟环境隔离Python环境
有时候系统自带的Python和你自己安装的包会有权限冲突,用虚拟环境可以彻底隔离,避免这类系统权限问题:
- 终端里创建并激活虚拟环境:
# 创建名为myenv的虚拟环境 python3 -m venv myenv # 激活虚拟环境 source myenv/bin/activate # 在虚拟环境里安装需要的包 pip install matplotlib plotly numpy - 之后每次运行脚本前,先激活这个虚拟环境,再执行脚本就不会有权限问题了。
补充说明:你代码里虽然用了plotly,但因为导入了matplotlib.pyplot,matplotlib会在导入时触发字体加载流程,所以即使你没调用plt的绘图函数,也会出现这个报错。
内容的提问来源于stack exchange,提问作者AnishaAmir
相关产品推荐
相关产品推荐

