Diagramme können auch auf WSL mit Visual Studio Code angezeigt werden, das ab der Version vom Juni 2019 einen „Plot Viewer“ enthält.
Fügen Sie in einer normalen .py-Datei eine Kommentarzeichenfolge #%%
ein markiert den Code als Jupyter (IPython)-Zelle und eine Codelinse zeigt Optionen bis Run Cell
an . Darüber hinaus beinhaltet das Rechtsklicken in eine Python-Datei die Option:
Aktuelle Datei im interaktiven Python-Fenster ausführen
Aus der Version von VS Code vom Juni 2019:
Das Update vom Juni 2019 enthielt einen brandneuen Plot Viewer, mit dem beliebige Bildplots bearbeitet werden können, z. B. die beliebten Matplotlib-Plots.
Sie können es ausprobieren, indem Sie auf die Diagramme doppelklicken oder auf die Schaltfläche „Bild erweitern“ klicken, die angezeigt wird, wenn Sie im interaktiven Python-Fenster über Diagrammbilder fahren:
Mit dem Plot Viewer können Sie in der aktuellen Sitzung schwenken, vergrößern/verkleinern, durch Plots navigieren und Plots in die Formate PDF, SVG oder PNG exportieren.
Ok, also ich habe es wie folgt zum Laufen gebracht. Ich habe Ubuntu unter Windows, mit installiertem Anaconda Python 3.6.
- VcXsrv oder Xming (X11 für Windows) von sourceforge herunterladen und installieren (siehe Bearbeitung unten)
sudo apt-get update
sudo apt-get install python3.6-tk
(Möglicherweise müssen Sie einen anderenpython*-tk
installieren abhängig von der verwendeten Python-Version)pip install matplotlib
(für matplotlib. aber viele andere Dinge funktionieren jetzt auch)export DISPLAY=localhost:0.0
(zu~/.bashrc
hinzufügen dauerhaft zu machen. siehe WSL2 unten)
Wie auch immer, nach all dem funktionierte dieser Code, der in Ubuntu auf wsl ausgeführt wurde, so wie er ist:
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)
plt.title('About as simple as it gets, folks')
plt.show()
Ergebnis:
Vielleicht geht das besser über ein Jupyter-Notebook oder so, aber es ist schön, grundlegende Befehlszeilen-Python-Matplotlib-Funktionalität in Ubuntu für Windows auf einem Subsystem für Linux zu haben, und dadurch funktionieren auch viele andere GUI-Apps.
Zum Beispiel können Sie xeyes installieren, und es wird gesagt, dass x11-Apps installiert werden sollen, und durch die Installation wird GTK installiert, das viele GUI-Apps verwenden. Aber der Punkt ist, sobald Sie Ihr DISPLAY richtig eingestellt haben und Ihren X-Server unter Windows, dann funktionieren die meisten Dinge, die auf einem nativen Ubuntu funktionieren würden, für die WSL.
Bearbeiten 04.09.2019 :Heute hatte ich Probleme mit "Bildschirmressourcen konnten nicht abgerufen werden", nachdem einige Bibliotheken aktualisiert wurden. Also habe ich VcXsrv installiert und das anstelle von Xming verwendet. Einfach von https://sourceforge.net/projects/vcxsrv/ installieren und xlaunch.exe ausführen, mehrere Fenster auswählen, weiter weiter weiter ok. Dann hat alles geklappt.
Bearbeitung für WSL 2-Benutzer am 23.06.2020 WSL2 (derzeit Insider Fast Ring) hat GPU/Docker-Unterstützung, also lohnt sich ein Upgrade. Allerdings läuft es in vm. Befolgen Sie für WSL 2 die gleichen Schritte 1–4 und dann:
- Die IP ist nicht localhost. es ist in resolv.conf, also führe es stattdessen aus (und füge es in ~/.bashrc ein):
export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
- Überprüfen Sie jetzt die Firewall:Windows-Sicherheit -> Firewall &Netzwerkschutz -> Eine App durch die Firewall zulassen -> Stellen Sie sicher, dass VcXsrv sowohl öffentlich als auch privat aktiviert hat. (Beim ersten Start von xlaunch erhalten Sie möglicherweise eine Aufforderung, die Firewall zuzulassen. Dies funktioniert auch. Wenn VcXsrv nicht in der Liste der Apps enthalten ist, können Sie es manuell hinzufügen, z. B. von 'C:\Programme\vcxsrv\vcxsrv .exe')
- Starten Sie VcXsrv mit aktiviertem "Zugriffskontrolle deaktivieren"
Hinweis:Einige WSL2-Benutzer haben Fehler wie couldn't connect to display "172.x.x.x:0"
erhalten . Versuchen Sie in diesem Fall, die in DISPLAY gespeicherte IP-Adresse mit diesem Befehl zu überprüfen:echo $DISPLAY
. Wenn die angezeigte IP falsch zu sein scheint (z. B. "8.8.8.8" oder eine andere nicht funktionierende IP-Adresse), müssen Sie den Code in ~/.bashrc
ändern zeigte in Punkt 5 etwas, das die IP-Adresse Ihrer Instanz erhält. Ein Benutzer sagte, dies habe funktioniert:export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
. Bei einigen anderen hat es jedoch nicht funktioniert. YMMV, aber finden Sie einfach Ihre IP und verwenden Sie if für DISPLAY. Für die meisten WSL2-Benutzer funktioniert der Befehl in #5.
Bearbeiten für Windows 11 :Wenn MS Sie davon überzeugt hat, Ihren alten Computer wegzuwerfen und einen mit TPM zu kaufen, und Sie Windows 11 haben, erhalten Sie die GUI kostenlos. Ich hoffe, sie fügen einen Upgrade-Pfad hinzu, um dies unter Windows 10 zu tun, da Win10 wie XP sein und lange halten wird, seit MS entschieden hat, dass Sie einen neueren Computer benötigen, obwohl Win11 auf alten Computern gut funktionieren würde.
Für WSL2 Unter Verwendung von Ubuntu Focal Fossa habe ich VcXsrv heruntergeladen und installiert unter Windows. Ich verwende diese Konfiguration:
Ich weiß es nicht für Natives OpenGL aber es scheint wichtig, die Zugriffskontrolle zu deaktivieren.
Jetzt müssen Sie die Umgebungsvariable DISPLAY
exportieren in der WSL.
Ich habe die richtige Adresse in /etc/resolv.conf
gefunden , sondern die in ifconfig
gefundene Ergebnis nicht. Der folgende Befehl funktioniert also nicht für mich:
export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
Diese IP-Adresse finden Sie auch im Befehl ipconfig
in CMD.exe
Befehlskontext. Suchen Sie nach vEthernet (WSL)
, das sollte es sein.
Jetzt können Sie testen, ob alles funktioniert, indem Sie einfach xcalc in Ihrer WSL-Umgebung ausführen. Wenn xcalc nicht vorhanden ist, installieren Sie es:
sudo apt-get update && sudo apt-get install x11-apps
Der Befehl xcalc sollte unter Windows eine Anwendung öffnen, die wie folgt aussieht:
Wenn es funktioniert, bedeutet dies, dass die Verbindung zu Ihrem X-Server möglich ist, aber Sie müssen möglicherweise ein zusätzliches Paket für Python installieren, wie zum Beispiel:
sudo apt-get install python3.x-tk
Ändern Sie .x
entsprechend Ihrer Python-Version.
Damit matplotlib mit GTKAgg unter Bash unter Ubuntu unter Windows funktioniert , ich:
- VcXsrv unter Windows installiert (mit Xming sollte es aber genauso funktionieren)
- stellen Sie DISPLAY wie oben beschrieben ein [
export DISPLAY=localhost:0.0
(zu ~/.bashrc hinzufügen, um es dauerhaft zu machen)] sudo pip uninstall matplotlib
ausgeführt- gefolgt von
sudo apt install python-matplotlib
- matplotlibrc aktualisiert, um
backend : GTKAgg
zu lesen (anstattbackend : agg
) - Ich habe auch
sudo apt-get install python-gtk2-dev
ausgeführt , dies ist jedoch möglicherweise nicht erforderlich.
Die Deinstallation der pip-installierten matplotlib und Neuinstallation über apt scheint notwendig zu sein, da pip die zum Ausführen von GTK erforderlichen C-Erweiterungen nicht enthält, die apt-Version jedoch schon.