
Wir versuchen, für unsere Studenten eine virtuelle Entwicklungs-/Forschungsumgebung in der Cloud einzurichten. Studenten müssen sich anmelden, die Python-IDE starten und einige Diagramme für ihre Hausaufgaben zeichnen können.
Wir verwenden 64-Bit-Ubuntu 12.10 mit installierter Python- und IDLE-IDE. Die Studenten melden sich mit ssh -X an und starten IDLE, woraufhin ein GUI-Fenster geöffnet wird.
Problem: So etwas in der IDE ausführen
nltk.download()
öffnet ein neues Fenster.ABERwenn wir so etwas versuchen:
book2.dispersion_plot("chair")
Nichts passiert, wo wir erwarten würden, dass ein neues Fenster geöffnet wird und die Handlung zeigt (das passiert auf dem lokalen Rechner). Ich vermute, dass dies etwas mit X11 zu tun hat, aber an diesem Punkt bin ich mit meinen Systemadministratorkenntnissen weit überfordert. Dies wurde sowohl von einem Mac- (xQuartz) als auch einem PC-Client (xming) bestätigt. Für jede Hilfe wäre ich sehr dankbar.
Antwort1
Habe es.
matplotlib verwendet ein Rendering-Backend, das mit x11 gut funktionieren muss. Aber die manuelle Auswahl des richtigen Backends [matplotlib.use('TkAgg')] würde eine Ausnahme auslösen. Es stellte sich heraus, dass matplotlib unter Ubuntu mit pip nicht richtig erstellt wird, da einige Abhängigkeiten fehlen – insbesondere die, die für x11-freundliche Backends erforderlich sind (Festlegen des Standardwerts auf 'Agg' in matplotlibrc). Behoben durch:
pip uninstall matplotlib //unistall matplotlib
apt-get build-dep matplotlib //download and build needed dependencies
pip install -U matplotlib //force matplotlib rebuild
Das Obige setzt das Standard-Backend korrekt auf TkAgg (in matplotlibrc). Hoffe, das hilft jemandem!