Matplotlib beenden Fehler
Betrachten Sie das folgende einfache python-code:
import matplotlib.pyplot as mplot
mplot.plot([1,2,3,4],[1,2,3,4])
Diese Skript hat keine Probleme, wenn das Skript läuft, aber wenn ich in der Nähe der python-Konsole (durch klicken auf das rote x), bekomme ich die folgende Fehlermeldung:
Fatal Python error: PyEval_RrestoreThread: NULL tstate
Dieses problem tritt nicht auf, wenn ich mit Strg+Z zum beenden der python-Konsole.
Es scheint mir, dass es ein paar hängende Prozess, der nicht ordnungsgemäß abgeschlossen, wenn ich es die erste Möglichkeit. Ich habe versucht, hinzufügen von
mplot.close('all')
dem Ende des script, aber ich bekomme die folgende resultierende Fehler:
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"
Ich bin mit Python 3.3 x86.
Könnte mir jemand helfen zu verstehen, dieses Problem?
Dank!
- welche version von mpl und welches OS?
- mpl-1.2.0.win32-py3.3 und Windows 7
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem ist, dass die standard-Python-interpreter ist nicht gebaut, wie wissen zu behandeln, graphical user interfaces. Ohne ins detail zu gehen, es sieht aus wie matplotlib versuchte zu schließen, ein thread, der nicht existiert.
Es gibt eine Erklärung der Ursachen bei http://matplotlib.org/users/shell.html und Verweise auf die Diskussionen über workarounds.
Die einfachste Antwort ist zu verwenden, IPython, die matplotlib bewusst als Referenz erklärt. Wenn dies nicht eine option, die Sie haben können, um tiefer zu Graben.
can't invoke 'event' command
. Ich habe die matplotlibrc-Datei von hier, legte es in mein script Ordner und verändertinteractive : True
war Der Fehler danach verschwunden!Kurze Antwort: stellen Sie sicher, Sie rufen
plt.close('all')
.Ich hatte das gleiche Problem heute. Dies würde auftreten, während eine Kante Fall, wo der code würde sich entscheiden, nicht zu Graphen und würde eine Funktion beendet früh, ohne Aufruf
plt.close('all')
(woplt
kommt ausimport matplotlib.pyplot as plt
).Entschloss ich mich schnell, indem Sie nur die
plt.close('all')
während die edge-Fall.Mir das passiert. Keine der Antworten das problem behoben. Ich ignorierte die Meldung und alles funktioniert wie erwartet.