IPython控制台调用matplotlib.pyplot出现Bus error (core dumped)求助
嘿,针对你在Ubuntu 16.04的Anaconda环境下,IPython控制台用matplotlib绘图频繁出现Bus error (core dumped)的问题——毕竟Jupyter里用%matplotlib inline完全正常,你怀疑Qt5的问题确实很有道理。结合你的情况,我整理了几个针对性的排查和解决方法,你可以一步步试试:
排查与解决步骤
1. 临时切换matplotlib后端测试
既然Jupyter的inline后端没问题,你可以在IPython控制台里手动指定非Qt的后端快速验证:
启动IPython后,依次输入:
import matplotlib matplotlib.use('Agg') # 也可以试试'TkAgg',取决于你系统的支持情况 import matplotlib.pyplot as plt然后尝试绘制简单图表(比如
plt.plot([1,2,3])),如果不再报错,那基本可以确认是Qt后端的兼容性问题。要是临时切换有效,还能把这个配置永久生效:
- 先找到matplotlib的配置文件路径:
import matplotlib print(matplotlib.matplotlib_fname()) - 打开这个文件,找到
backend一行,修改为backend: Agg或者backend: TkAgg,保存后重启IPython即可。
- 先找到matplotlib的配置文件路径:
2. 重装Anaconda的Qt相关依赖包
大概率是Qt5或PyQt的包损坏、版本不兼容导致的,试试重装相关组件:
- 打开终端,先激活你的Anaconda环境(如果用了虚拟环境),然后执行:
要是重装最新版还是有问题,可以指定适配Ubuntu 16.04的稳定版本:conda remove qt pyqt conda install qt pyqt
重装完成后重启IPython再测试绘图。conda install qt=5.9 pyqt=5.9
3. 补充系统级Qt依赖
Anaconda的Qt可能和Ubuntu 16.04系统自带的Qt组件有冲突,试试安装系统级的Qt5依赖:
- 在终端执行:
安装完成后再启动IPython测试。sudo apt-get install qt5-default libqt5gui5 libqt5core5a libqt5widgets5
4. 用IPython魔法命令默认切换后端
你也可以直接用IPython的魔法命令设置默认后端,避免每次手动切换:
- 在IPython里输入:
测试绘图正常后,还能把这个配置加到IPython的默认启动项里:%matplotlib agg # 或者%matplotlib tk- 先生成IPython配置文件(如果还没有):
ipython profile create - 打开
~/.ipython/profile_default/ipython_config.py,添加一行:c.InteractiveShellApp.matplotlib = 'agg'
- 先生成IPython配置文件(如果还没有):
5. 对比两台笔记本的环境细节
既然另一台配置相同的电脑能正常运行,你可以对比两者的环境差异定位问题:
- 分别在两台电脑执行
conda list,导出环境列表,对比Qt、PyQt、matplotlib的版本是否完全一致; - 检查IPython的配置文件内容是否相同;
- 执行
dpkg -l | grep qt5,对比两台电脑的系统级Qt包版本。
内容的提问来源于stack exchange,提问作者Justin Solms
相关产品推荐
相关产品推荐

