conda更新后,使用matplotlib时python内核崩溃

Posted

技术标签:

【中文标题】conda更新后,使用matplotlib时python内核崩溃【英文标题】:After conda update, python kernel crashes when matplotlib is used 【发布时间】:2021-12-16 18:50:08 【问题描述】:

我用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 控制台(我启动服务器的地方)上没有错误,我不知道去哪里调查。

【问题讨论】:

【参考方案1】:

2021 年 11 月 6 日更新

根据main / packages / freetype,conda 的默认 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.0conda 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窗口,然后出现一个新的命令行。 问题似乎在于(base) 中的conda update --all,然后任何使用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)
问题似乎是freetype2.11.0 降级到2.10.4 解决了这个问题并使环境与matplotlib 一起工作 去发布错误报告,发现有[Bug]: Matplotlib crashes Python #21511

【讨论】:

你绝对的超级巨星。对于你为我所做的事情,一个赞成票还不够,所以我要去你的个人资料,并增加你的其他一些答案:-D @MikeAzatov 这个特定的问题/答案特定于freestyle 的问题。可能还有其他错误,或者可能只是我的安装问题。您可以随时回滚更新。见***.com/q/54172339/7758804【参考方案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 环境。

以上是关于conda更新后,使用matplotlib时python内核崩溃的主要内容,如果未能解决你的问题,请参考以下文章

conda更新后,使用matplotlib时python内核崩溃

无法通过 WSL 使用 conda 显示 matplotlib 的输出

windows 安装 matplotlib,使用conda

如何在 Windows 上使用 conda 安装 matplotlib 而不安装 Qt?

opencv-PIL-matplotlib-Skimage-Pytorch图片读取区别与联系

安装Matplotlib