Ich habe eine virtualenv
mit pyenv mit Python v2.7.12 installiert. Innerhalb dieser virtualenv installierte ich matplotlib
v1.5.1 über:Ändern Matplotlib Backend in Python virtualenv
pip install matplotlib
ohne Probleme. Das Problem ist, dass ein einfaches Skript kein Plot-Fenster erzeugen kann. Das Backend, das ich im virtualenv sehen mit:
import matplotlib
print matplotlib.rcParams['backend']
ist agg
, die offenbar die Ursache des Problems ist. Wenn ich das Backend in meiner systemweiten Installation überprüfe, bekomme ich Qt4Agg
(und das obige Skript, wenn es ausgeführt wird, zeigt ein Diagrammfenster gerade gut).
Es gibt bereits einige ähnliche Fragen in SO, und ich habe die Lösungen in allen von ihnen versucht.
Matplotlib plt.show() isn't showing graph
Versucht das virtualenv mit der --system-site-packages Option zu erstellen. No Go.
How to ensure matplotlib in a Python 3 virtualenv uses the TkAgg backend?
installiert
sudo apt install tk-dev
, dann mitpip --no-cache-dir install -U --force-reinstall matplotlib
neu installiert. Das Backend wird weiterhin alsagg
angezeigt.Matplotlib doesn't display graph in virtualenv
Gefolgt Anweisungen in this answer gegeben installieren, nichts tat (die andere Antwort beinhaltet
easy_install
mit, die I will not do)matplotlib plot window won't appear
Die Lösung hier gegeben ist „installieren ein GUI-Bibliothek (eine von Tkinter, GTK, QT4, PySide, Wx) ". Ich weiß nicht, wie ich das machen soll. wenn ich Des Weiteren verwenden:
import matplotlib.rcsetup as rcsetup print(rcsetup.all_backends)
ich:
[u'GTK', u'GTKAgg', u'GTKCairo', u'MacOSX', u'Qt4Agg', u'Qt5Agg', u'TkAgg', u'WX', u'WXAgg', u'CocoaAgg', u'GTK3Cairo', u'GTK3Agg', u'WebAgg', u'nbAgg', u'agg', u'cairo', u'emf', u'gdk', u'pdf', u'pgf', u'ps', u'svg', u'template']
was bedeutet, dass alle diese Backends sind in meinem System (?).
matplotlib does not show my drawings although I call pyplot.show()
Meine
matplotlibrc
Datei zeigt die Zeile:backend : Qt4Agg
Ich weiß nicht, wie die virtualenv sich dessen bewusst zu machen?
Einige der Lösungen beinhalten die Schaffung von Verbindungen auf die Systemversion von matplotlib
(here und here), die ich nicht tun will.Ich möchte die Version matplotlib
in der virtualenv
installiert verwenden.
Wenn ich versuche, die Back-End-Set mit:
import matplotlib
matplotlib.use('GTKAgg')
ich ImportError: Gtk* backend requires pygtk to be installed
(gleich mit GTK
). Aber wenn ich sudo apt-get install python-gtk2 python-gtk2-dev
mache, sehe ich, dass sie beide installiert sind.
Verwendung:
import matplotlib
matplotlib.use('Qt4Agg')
(oder Qt5Agg
) Ergebnisse in ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5, or PySide package to be installed, but it was not found.
nicht sicher, ob ich etwas Paket installieren sollte?
Verwendung:
import matplotlib
matplotlib.use('TkAgg')
Ergebnisse in ImportError: No module named _tkinter
, aber sudo apt-get install python-tk
sagt, dass es installiert ist.
Verwendung:
import matplotlib
matplotlib.use('GTKCairo')
Ergebnisse in ImportError: No module named gtk
. Also versuche ich sudo apt-get install libgtk-3-dev
aber es steht, dass es schon installiert ist.
Wie kann ich den virtualenv das gleiche Backend benutzen, das mein System benutzt?
Haben Sie die offensichtliche Problemumgehung des manuellen Einrichtens eines Backends ausprobiert? [So] (http://stackoverflow.com/a/20249447/5067311). –
@AndrasDeak siehe aktualisierte Antwort. – Gabriel
Nun, das ist ziemlich seltsam, da [zumindest tkinter installiert werden sollte, wahrscheinlich] (http://stackoverflow.com/a/20075485/5067311). Leider weiß ich nichts über virtualenvs, also kann ich nicht helfen über diesen Punkt hinaus. –