Ich habe matplotlib erfolgreich in einer virtuellen Umgebung installiert. Jetzt versuche ich es zum Zeichnen zu bringen. Ich weiß, wie man das Backend ändert, aber ich habe große Probleme, herauszufinden, wo ich es ändern soll.

Hat es jemand geschafft, es mit Python3 zum Laufen zu bringen? Wenn ja, wie?

Ich habe ein paar Dinge ausprobiert. Ich habe alle Backends durchlaufen, um zu sehen, was alle Beschwerden sind, und ich versuche nicht, nur eine davon zum Laufen zu bringen.

Möglicherweise ist auch erwähnenswert, dass mein Ziel darin besteht, es in eine Pyramid-App zu integrieren.

Folgendes ist bisher für die verschiedenen Backends passiert:

  • Agg: Dies war das Standard-Backend. es zeichnet nicht
  • GTK: erfordert pygtk, das anscheinend nicht auf python3 portiert wurde
  • GTKAgg: dito
  • GTKCairo: sagt, dass 'erforderliches Paket gtk' etwas in der oben genannten Richtung voraussetzt
  • FltkAgg: Sieht nicht so aus, als hätte es eine Python3-Version. Obwohl es in den häufig gestellten Fragen zur Python3-Benutzeroberfläche erwähnt wird. Ich denke, das war nur eine Erregung. verdammt
  • MacOSX: Ich verwende Ubuntu. als unangemessen angenommen
  • QtAgg: erfordert pyqt. siehe Qt4Agg
  • Qt4Agg: Siehe Installation von PyQt4 in einer virtuellen Umgebung
  • TkAgg: ImportError: Name _tkagg kann nicht importiert werden. Ich kann import tkinter im Interpreter ausführen, daher bin ich mir nicht sicher, was noch kaputt ist
  • WX: ImportError: Matplotlib backend_wx und backend_wxagg erfordern wxversion, die nicht gefunden wurde
  • WXAgg: dito
  • CocoaAgg: ImportError: Für das CococaAgg-Backend musste PyObjC installiert sein!
  • GTK3Cairo: ImportError: Für das GTK3-Backend muss pygobject installiert sein. Ich habe versucht, es zu installieren, aber wenn ich versuche, es mit der richtigen Python zu konfigurieren, beschwert es sich über fehlende Header
  • GTK3Agg: Kein Modul namens cairo. aber ich nehme an, ich werde das gleiche Problem wie oben treffen
  • cairo: Für das Kairoer Backend muss pycairo installiert sein
  • emf: Sie müssen pyemf zuerst von http://pyemf.sf.net installieren. Sieht so aus, als ob es Windowsey-Sachen machen soll, also ist dies möglicherweise keine gute Wahl
  • gdk: kein Modul namens gobject
  • pdf: läuft aber zeichnet nicht
  • pgf: dito
  • ps: dito
  • svg: dito
  • Vorlage: dito.

Das Skript, mit dem ich mein Backend teste, lautet:

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

Bisher habe ich viel zu viel Zeit damit verbracht, Python3.2 und Qt4 zum Spielen zu bringen, und ich scheine bei jeder Drehung auf Probleme zu stoßen. Anstatt meinen Versuch-und-Irrtum-Ansatz fortzusetzen, möchte ich fragen:

  1. Was ist die beste Option für Python3.2 und Pyramid?
  2. Wie mache ich das möglich?

In der Zwischenzeit werde ich mit dem Versuch und Irrtum fortfahren und meine Frage aktualisieren, wenn ich gehe.

ANMERKUNGEN zu Dingen, die ich versuche

Für TkAgg:

Da tkinter korrekt importiert, gehe ich davon aus, dass es korrekt installiert ist (wenn ich falsch liege, gibt es vermutlich eine Möglichkeit, es zu testen?). Dieser Typ http: //ask.sagemath. org / question / 626 / sage-python-import-matplotlib-no-module-named hatte ein ähnliches Problem, aber ich bin mir sicher, dass sein Setup sich von meinem unterscheidet. Die Lösung bestand darin, tkagg.py im Darm des Verzeichnisses python3.2-Site-Pakete zu finden und die fehlerhafte Importanweisung zu bearbeiten. Es fällt mir schwer zu glauben, dass Matplotlib-Schiffe kaputt sind (und ich kann den vorgeschlagenen geänderten Code nicht ausführen ...)

Für WX-Sachen:

wxPython für Python 3 gibt an, dass Python3 noch nicht unterstützt wird. Auch wxPython hat keine Erwähnung von Python3 auf ihrer Website, also denke ich, dass dies ein No-Go ist. Die Optionen gehen zur Neige: /

Kakao:

Das Gleiche gilt für Schreiben von Kakaoanwendungen in Python 3

EMF:

Dito: http://pyemf.sourceforge.net/README.html

24
Sheena 18 Okt. 2012 im 10:30

4 Antworten

Für mich hat folgendes funktioniert:

  • deaktivieren,
  • sudo apt-get install python3-matplotlib libfreetype6-dev
  • (virtualenv aktivieren) source / home / ...,
  • pip install numpy matplotlib (möglicherweise deinstallieren und dann installieren, wenn Sie es bereits haben, oder versuchen Sie an dieser Stelle, ein neues Venv zu erstellen)
  • pip install --upgrade pip in venv könnte ebenfalls helfen (aus einem mir unbekannten Grund), wie es bei meiner Installation von scipy der Fall war.

Es zeichnet jetzt mit virtualenv.

$ lsb_release -a (gives..)

Ubuntu 14.04.5 LTS

0
1Penko 6 Feb. 2018 im 02:02

Ich habe Quell-Builds von Python 3.3.2 und Matplotlib erstellt. Wie oben erwähnt, funktioniert TkAgg. Wenn Sie alles aus der Quelle erstellen:

  1. sudo apt-get install tk-dev
  2. Python3 neu erstellen (sauber machen; ./configure; machen)
  3. Matplotlib bereinigen (Ei aus virtualenv löschen, Cache-Objekte aus ~ / .config / matplotlib entfernen)
  4. Matplotlib aus dem Quellcode neu erstellt (rm -r build /; python setup.py build; python setup.py install)

Endlich muss ich sehen, dass diese dumme Box mit meiner x = y-Zeile auftaucht.

Stunden ....

2
justinvf 29 Juli 2013 im 03:42

Matplotlib scheint mit seiner 1.2.x-Version einen großen Schritt in Richtung Python 3 gemacht zu haben. matplotlib 1.2.0rc2 (+ numpy 1.7.0b2) arbeitet für mich mit

  • Python 3.2.2 (virtualenv unter Linux Mint 12)
  • Python 3.3.0 (lokale Installation von der Quelle)

In beiden Fällen meldet matplotlib "TkAgg" als verwendetes Backend.

Leider habe ich keine Ahnung, ob / wie dies mit Pyramid funktionieren könnte.

1
Hans 24 Okt. 2012 im 08:57

Ich habe eine Antwort geschrieben, um sicherzustellen, dass matplotlib in einer virtuellen Python 3-Umgebung in Ubuntu 16.04 das TkAgg Backend unter https verwendet: //askubuntu.com/a/785506/15003 das kann hier nützlich sein. Das Ergebnis ist, tk-dev zu installieren, die virtuelle Umgebung zu aktivieren und matplotlib in der virtuellen Umgebung neu zu installieren:

sudo apt install tk-dev
source venv/bin/activate
pip --no-cache-dir install -U --force-reinstall matplotlib

python -c 'import matplotlib as mpl; print(mpl.get_backend())' sollte jetzt TkAgg sagen.

0
Community 13 Apr. 2017 im 12:22