在PyCharm(社区版2016.2.3)中,使用anaconda2 + ubuntu 14.04, import matplotlib
在调试模式期间导致信号11错误。在发布模式下执行脚本时没有问题。
python代码:
import matplotlib as pt
调试控制台:
连接到pydev调试器(build 162.1967.10)
GLib-GIO-Message:使用'内存'GSettings后端。您的设置不会保存或与其他应用程序共享。
后端Qt4Agg是交互式后端。打开交互模式。
进程以退出代码139结束(由信号11中断:SIGSEGV)
我有相同的错误消息。我删除了anaconda并安装了miniconda而重新安装了pycharm。当我运行python控制台以及调试控制台时,退出代码139都出现了。
现在当我导入matplotlib时,我仍然收到消息:
后端Qt4Agg是交互式后端。打开交互模式。
GLib-GIO-Message:使用'内存'GSettings后端。您的设置不会保存或与其他应用程序共享。
我想这不太理想,但我没有得到退出代码,一切似乎都有效。这是一个解决方案,但必须有一个更健壮的方式。
有点晚,但它可能会帮助一些googler。
Qt会导致这个问题。 PyCharm默认使用--qt-support = auto运行。
如果安装了Qt4和Qt5的python绑定,则auto函数可能无法选择正确的Qt版本。
尝试在PyCharm设置中设置正确的Qt绑定(Build,Ex ... - > Python Debugger - PyQt Compatible)
从Auto到PyQt4的设置在conda环境中为我工作,没有删除任何东西。
通过在PyCharm设置(Build,Ex ... - > Python Debugger)中解开Qt框,我设法摆脱了段错误和代码139。
我的使用场景:使用远程解释器运行一些代码。需要matplotlib只是为了一些数字。
我删除pyqt5绑定后,我的工作。
sudo apt-get remove python3-pyqt5
快速而肮脏的解决方法是将Qt后端切换为另一个后端。例如,在导入Matplotlib后立即添加:
matplotlib.use('TkAgg')
你可能想要使用另一个 可用的后端。
如果您有各种具有Matplotlib依赖关系的模块,并且您不想污染您的代码,或者如果您在团队中,那么最好更改您的后端 matplotlibrc
。你可以找到你正在使用的matplotlibrc:
import matplotlib
print(matplotlib.matplotlib_fname())
我的情况是由于熊猫包。可能它是在线程中进行数据帧(不支持?!)。
要找到您的原因,请执行以下操作:
gdb python
(gdb) script.py
(当它崩溃时)
where
这将显示堆栈跟踪。在我的情况下,numpy中丢失的文件,修复者:
pip install --upgrade pandas
导入matplotlib
然后用这句话......
matplotlib.use( 'TkAgg')