Matplotlib字体缓存导致Spyder内核启动失败的解决方案

spyder启动内核时报错“matplotlib is building the font cache; this may take a moment.”,表面看是初始化提示,实则常伴随内核卡死或崩溃——根本原因多为matplotlib字体缓存(font cache)文件损坏、路径不可写或json缓存文件格式异常。该问题在首次运行anaconda或系统字体库更新后高频出现。

要彻底解决,需手动清除Matplotlib生成的缓存文件。操作步骤如下:

  1. 定位缓存目录:在Spyder的IPython控制台(或任意Python环境)中执行:

    import matplotlib as mpl
    print(mpl.get_cachedir())

    输出类似路径(Windows常见为 C:\Users\YourName\.matplotlib,macOS/Linux为 /Users/yourname/.matplotlib 或 ~/.matplotlib)。

  2. 删除缓存文件:进入该目录,找到并删除以下文件(注意:仅删缓存文件,勿删整个文件夹):

    • fontlist-*.json(如 fontlist-v330.json)
    • tex.cache/ 文件夹(如有,可一并清空)
    ⚠️ 注意事项: 不要删除 matplotlibrc 配置文件,否则将丢失自定义设置; 若目录无写入权限(如Linux/macOS下权限为只读),请先修正权限:chmod 755 ~/.matplotlib; 清理后首次重启Spyder时,Matplotlib会自动重建缓存(耗时数秒属正常,无需干预)。
  3. 预防建议

    • 避免在多用户共用环境中直接修改 .matplotlib 目录;
    • 可通过设置环境变量强制指定缓存路径(适用于容器或CI场景):
      export MPLCONFIGDIR="/tmp/matplotlib_cache"

完成上述操作后,重启Spyder,内核即可正常启动。该方法兼容Anaconda全版本(包括Spyder 5.x / 6.x + Matplotlib 3.5+),是官方推荐的轻量级修复方案。