【问题标题】:After conda update, python kernel crashes when matplotlib is usedconda更新后,使用matplotlib时python内核崩溃
【发布时间】:2025-11-30 22:45:02
【问题描述】:

我用conda 创建了这个简单的环境:

conda create -n test python=3.8.5 pandas scipy numpy matplotlib seaborn jupyterlab

jupyter lab 中的以下代码使内核崩溃:

import matplotlib.pyplot as plt

plt.subplot()

我在Linux 上没有遇到问题。问题是当我尝试Windows 10

jupyter lab 控制台(我启动服务器的地方)上没有错误,我不知道在哪里进行调查。

【问题讨论】:

    标签: python windows matplotlib conda freetype


    【解决方案1】:

    2021 年 11 月 6 日更新

    • 根据main / packages / freetypeconda 的默认 pkgs/main 频道已恢复为在 Windows 上使用 freetype 2.10.4
    • 如果您仍然遇到问题,请使用conda list freetype 检查版本:freetype != 2.11.0
      • 如果是 2.11.0,则根据解决方案更改版本,或 conda update --all(前提是您的默认频道未在 .condarc 配置文件中更改)。

    解决方案

    • 如果在安装 Anaconda 后出现这种情况,请自 2021 年 10 月 27 日起更新 condafreetype
    • 在任何受影响的环境中转到Anaconda 提示并降级freetype 2.11.0
      • conda install freetype=2.10.4
    • 与使用matplotlib 的任何包和任何IDE 相关
      • 例如,pandas.DataFrame.plotseaborn
      • Jupyter、Spyder、VSCode、PyCharm、命令行。

    发现

    • 使用来自 conda(10 月 29 日星期五发布)的最新更新进行更新后出现问题。
    • 使用conda update --all 更新后,任何IDE 中与matplotlib 相关的任何内容都会出现问题(不仅仅是Jupyter)。
      • 我在命令提示符下在JupyterLabPyCharmpython 中对此进行了测试。
      • PyCharm:Process finished with exit code -1073741819
      • JupyterLab:内核刚刚重新启动,没有相关的错误或 Traceback
      • 命令提示:会短暂出现一个空白的交互式matplotlib窗口,然后出现一个新的命令行。
    • 问题似乎在于conda update --all in (base),然后任何使用matplotlib(例如seabornpandas.DataFrame.plot)的绘图API 都会在任何环境中杀死内核。
    • 我不得不重新安装 Anaconda,但不要更新 (base),然后我的其他环境就可以工作了。
    • 我还没有弄清楚具体是什么导致了这个问题。
    • 我用python 3.8.12python 3.9.7 测试了这个问题
    • 当前测试:
      • 以下是conda 修订日志。
      • conda update --all 之前,此环境可以正常工作,但在更新之后,使用 matplotlib 绘图会使 python 内核崩溃
      2021-10-31 10:47:22  (rev 3)
         bokeh  {2.3.3 (defaults/win-64) -> 2.4.1 (defaults/win-64)}
         click  {8.0.1 (defaults/noarch) -> 8.0.3 (defaults/noarch)}
         filelock  {3.0.12 (defaults/noarch) -> 3.3.1 (defaults/noarch)}
         freetype  {2.10.4 (defaults/win-64) -> 2.11.0 (defaults/win-64)}
         imagecodecs  {2021.6.8 (defaults/win-64) -> 2021.8.26 (defaults/win-64)}
         joblib  {1.0.1 (defaults/noarch) -> 1.1.0 (defaults/noarch)}
         lerc  {2.2.1 (defaults/win-64) -> 3.0 (defaults/win-64)}
         more-itertools  {8.8.0 (defaults/noarch) -> 8.10.0 (defaults/noarch)}
         pyopenssl  {20.0.1 (defaults/noarch) -> 21.0.0 (defaults/noarch)}
         scikit-learn  {0.24.2 (defaults/win-64) -> 1.0.1 (defaults/win-64)}
         statsmodels  {0.12.2 (defaults/win-64) -> 0.13.0 (defaults/win-64)}
         sympy  {1.8 (defaults/win-64) -> 1.9 (defaults/win-64)}
         tqdm  {4.62.2 (defaults/noarch) -> 4.62.3 (defaults/noarch)}
         xlwings  {0.24.7 (defaults/win-64) -> 0.24.9 (defaults/win-64)}
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,经过大量调查和故障排除后,修复非常简单:

      conda update -c anaconda numpy
      
      conda upgrade -c conda-forge matplotlib
      

      之后它运行良好,我的视觉效果没有问题。

      【讨论】:

      • 这是一个糟糕的选择。它具有删除 45 个包降级数百个包并将它们从 pkgs/main 切换到 anaconda channel 的效果,然后升级并切换到conda-forgechannel。这只是因为conda-forge 尚未将freestyle 2.11.0 合并到channel feedstock 中。更好的选择是接受的答案,它只会更改单个问题包的版本。
      • 这对我有用。但我读了@TrentonMcKinney 的评论太晚了。有什么方法可以回滚到不涉及重新安装的更新版本?
      • @Nando Do conda update --all,它将使用默认的pkgs/main 频道,然后应用接受的答案。
      • @Nando Conda 跟踪修订。见conda list --revisions;使用conda install --revision <n>回滚。
      • 查询是一个简单的 conda env,我提供了一个简单有效的修复。它不适用于您的基本 conda 环境。