Matplotlib退出错误

时间:2014-02-26 23:12:00

标签: python matplotlib

考虑以下简单的python代码:

import matplotlib.pyplot as mplot 
mplot.plot([1,2,3,4],[1,2,3,4])

脚本运行时此脚本没有问题,但是如果我关闭python控制台(通过单击红色x),我会收到以下错误:

Fatal Python error: PyEval_RrestoreThread: NULL tstate

如果我使用ctrl + Z退出python控制台,则不会发生此问题。 在我看来,如果我存在第一种方式,有一些悬挂过程没有正确终止。我试图添加

mplot.close('all')

到脚本的末尾,但是我得到以下结果错误:

can't invoke "event" command: application has been destroyed while executing 
"event generate $w <<ThemeChanged>>"
(procedure "ttk::ThemeChanged" line 6)
invoke from within
"ttk::ThemeChanged"

我正在运行Python 3.3 x86。 任何人都可以帮我理解这个问题吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

问题在于,标准Python解释器并非基于如何处理图形用户界面的知识构建。没有详细说明,看起来matplotlib试图关闭一个不存在的线程。

http://matplotlib.org/users/shell.html的原因进行了解释,并指出了有关变通方法的讨论。

最简单的答案是使用IPython,这是matplotlib意识到的,参考解释。如果这不是一个选项,你可能需要深入挖掘。

答案 1 :(得分:3)

简短回答:请务必致电plt.close('all')

我今天遇到了同样的问题。这将出现在边缘情况下,代码将决定不生成图形并且会提前退出函数,而不调用plt.close('all')(其中plt来自import matplotlib.pyplot as plt)。

我通过在边缘情况下添加plt.close('all')来快速解决它。

答案 2 :(得分:0)

这发生在我身上。发布的答案都没有解决问题。我忽略了这条消息,一切都按预期工作。