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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:42:35