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 日起更新conda
或 freetype
。
在任何受影响的环境中转到Anaconda
提示并降级freetype 2.11.0
。
conda install freetype=2.10.4
与使用matplotlib
的任何包和任何IDE 相关
例如,pandas.DataFrame.plot
和 seaborn
Jupyter、Spyder、VSCode、PyCharm、命令行。
发现
使用来自conda
(10 月 29 日星期五发布)的最新更新进行更新后出现问题。
使用conda update --all
更新后,任何IDE 中与matplotlib
相关的任何内容都会出现问题(不仅仅是Jupyter
)。
我在命令提示符下在JupyterLab
、PyCharm
和python
中对此进行了测试。
PyCharm:Process finished with exit code -1073741819
JupyterLab:内核刚刚重新启动,没有相关的错误或 Traceback
命令提示:会短暂出现一个空白的交互式matplotlib窗口,然后出现一个新的命令行。
问题似乎在于(base)
中的conda update --all
,然后任何使用matplotlib
(例如seaborn
和pandas.DataFrame.plot
)的绘图API 都会在任何环境中杀死内核。
我不得不重新安装 Anaconda,但不要更新 (base)
,然后我的其他环境就可以工作了。
我还没有弄清楚具体是什么导致了这个问题。
我用python 3.8.12
和python 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)
问题似乎是freetype
从2.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-forge
channel。这只是因为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 上使用 conda 安装 matplotlib 而不安装 Qt?