2016-08-16 6 views
3

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.

  1. Matplotlib plt.show() isn't showing graph

    Versucht das virtualenv mit der --system-site-packages Option zu erstellen. No Go.

  2. How to ensure matplotlib in a Python 3 virtualenv uses the TkAgg backend?

    installiert sudo apt install tk-dev, dann mit pip --no-cache-dir install -U --force-reinstall matplotlib neu installiert. Das Backend wird weiterhin als agg angezeigt.

  3. 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)

  4. 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 (?).

  5. 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?

+0

Haben Sie die offensichtliche Problemumgehung des manuellen Einrichtens eines Backends ausprobiert? [So] (http://stackoverflow.com/a/20249447/5067311). –

+0

@AndrasDeak siehe aktualisierte Antwort. – Gabriel

+0

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. –

Antwort

3

können Sie halten Ihre Backend TkAgg im Python 2 virtualenv zu ändern, indem die Lauf folgende:

sudo apt install python-tk # install Python 2 bindings for Tk 
pip --no-cache-dir install -U --force-reinstall matplotlib # reinstall matplotlib 

das Backend Um zu bestätigen, ist in der Tat TkAgg, laufen

python -c 'import matplotlib as mpl; print(mpl.get_backend())' 

und Sie sollten TkAgg sehen .

+1

Es funktionierte perfekt. Vielen Dank Edwinski! – Gabriel

+0

Ich brauche Hilfe in einer Conda-Umgebung. Ich möchte auf 'GTKAgg' Backend ändern, und in meiner Conda-Umgebung ist pygtk installiert, aber ich habe immer noch das 'Gtk * Backend erfordert pygtk installiert werden' Fehler. Das erneute Installieren von Matplotlib hilft nicht. – Jason

+0

@Jason Vielleicht möchten Sie eine neue Frage stellen, da diese Antwort möglicherweise nicht für Conda-Umgebungen gilt. – edwinksl

Verwandte Themen