运行plt.show()报退出码-1073741819(0xC0000005)错误如何解决?
报错根因
0xC0000005是Windows平台下的内存访问违规错误,该场景下基本是matplotlib默认渲染后端和当前环境(升级后的依赖包、IDE配置、系统图形接口)不兼容导致,和你编写的代码逻辑没有关联。
可直接落地的解决方法
- 方案1:修改matplotlib渲染后端(成功率最高)
在导入matplotlib.pyplot之前先指定后端,优先尝试TkAgg、Qt5Agg这两个兼容性较好的交互式后端:
import matplotlib # 下面三行选一个即可,哪个能正常运行就用哪个 matplotlib.use('TkAgg') # matplotlib.use('Qt5Agg') # matplotlib.use('Agg') # 不需要弹出窗口、仅保存图片时用这个 import matplotlib.pyplot as plt import numpy as np # 后续接你的原有代码 xpoints = np.array([1, 8]) ypoints = np.array([3, 10]) plt.plot(xpoints, ypoints) plt.show()
- 方案2:降级numpy版本
批量升级所有包后出现该问题,大概率存在numpy和matplotlib的版本兼容冲突,降级numpy到1.23.x稳定版即可:
# pip环境执行 pip install numpy==1.23.5 # conda环境执行 conda install numpy=1.23.5
- 方案3:关闭IDE的集成绘图功能
如果使用PyCharm作为开发工具,默认打开的科学绘图集成窗口容易触发该崩溃:
打开路径:File > Settings > Tools > Python Scientific,取消勾选Show plots in tool window,重启IDE后再运行代码。 - 方案4:禁用图形硬件加速
部分老旧显卡驱动和matplotlib的硬件加速渲染逻辑冲突,添加配置关闭即可:
import matplotlib.pyplot as plt plt.rcParams['backend.qt5.allow_opengl'] = False
- 方案5:跳过弹出窗口直接保存图片
如果不需要交互式查看图片,直接将plt.show()替换为plt.savefig('自定义输出路径.png')即可,不需要调用交互式渲染逻辑,完全避开该错误。
内容的提问来源于stack exchange,提问作者marv_97
相关产品推荐
相关产品推荐

