在使用conda更新依赖库后,发现在使用Matplotlib时Python内核会崩溃
背景介绍
近期在使用conda更新依赖库后,发现在使用Matplotlib时Python内核会崩溃。这篇文章将会介绍此问题的原因和解决方法。
阅读更多:Matplotlib 教程
问题描述
当使用conda更新依赖库时,有可能会导致Matplotlib无法正常工作。在使用Matplotlib绘制图像时,Python内核会崩溃。具体崩溃情况如下:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()
Kernel died, restarting
本次更新后,Matplotlib版本更新为3.4.0,可能和此版本有关。
问题原因
在对该问题进行研究之后,发现问题源于Matplotlib的TkAgg交互式后端。Matplotlib默认使用的交互式后端为TkAgg,而TkAgg在与某些库一起使用时会导致Python内核崩溃。因此,需要对Matplotlib默认的交互式后端进行更改。
解决方法
解决方法有两种:
方法一:更改Matplotlib的默认交互式后端
更改Matplotlib的默认交互式后端可以使Matplotlib正常工作。在开始使用Matplotlib前,需要在引用Matplotlib库时,添加以下代码:
import matplotlib
matplotlib.use('Qt5Agg')
此代码的作用是更改Matplotlib库的默认交互式后端为Qt5Agg。Qt5Agg是Matplotlib支持的一个后端,采用此后端可以避免TkAgg的崩溃问题,使Matplotlib正常工作。
方法二:卸载Tkinter
如果以上方法依然无法解决问题,可以尝试卸载Tkinter库。Tkinter库通常为Python内置库,如果非必须需要,可以考虑卸载此库。方法如下:
打开终端或命令行,运行以下命令卸载Tkinter库:
pip uninstall tkinter
更改Matplotlib的默认交互式后端,方法如方法一所述。
总结
当在使用Matplotlib绘制图像时,发现Python内核崩溃,可能由于Matplotlib的交互式后端选择问题。在使用Matplotlib前,可以更改Matplotlib的交互式后端,或者卸载Tkinter库。以上两种方法都可以解决Python内核崩溃的问题。