Grafy lze také zobrazit na WSL pomocí kódu Visual Studio, který od vydání z června 2019 obsahuje „Prohlížeč grafů“.
V běžném souboru .py vložení řetězce komentáře #%%
označí kód jako buňku Jupyter (IPython) a čočka kódu zobrazí možnosti Run Cell
. Kromě toho klepnutí pravým tlačítkem do souboru Python obsahuje možnost:
Spusťte aktuální soubor v interaktivním okně Pythonu
Z vydání VS Code z června 2019:
Aktualizace z června 2019 zahrnovala zcela nový Prohlížeč grafů, který lze použít k manipulaci s libovolnými obrázky, jako jsou oblíbené grafy matplotlib.
Můžete to vyzkoušet dvojitým kliknutím na grafy nebo kliknutím na tlačítko „rozbalit obrázek“, které se zobrazí, když najedete myší na obrázky v interaktivním okně Pythonu:
Pomocí prohlížeče výkresů můžete posouvat, přibližovat/oddalovat, procházet výkresy v aktuální relaci a exportovat výkresy do formátů PDF, SVG nebo PNG.
Dobře, takže jsem to zprovoznil následovně. Mám Ubuntu na Windows s nainstalovaným anaconda python 3.6.
- Stáhněte a nainstalujte VcXsrv nebo Xming (X11 pro Windows) ze sourceforge (viz úprava níže)
sudo apt-get update
sudo apt-get install python3.6-tk
(možná budete muset nainstalovat jinýpython*-tk
v závislosti na verzi pythonu, kterou používáte)pip install matplotlib
(pro matplotlib. ale mnoho dalších věcí nyní funguje také)export DISPLAY=localhost:0.0
(přidat do~/.bashrc
učinit trvalou. viz WSL2 níže)
Každopádně, po tom všem tento kód běžící v ubuntu na wsl fungoval tak, jak je:
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()
výsledek:
Možná je to lepší udělat pomocí notebooku Jupyter nebo tak něco, ale je hezké mít základní funkce příkazového řádku python matplotlib v Ubuntu pro Windows na Subsystému pro Linux a díky tomu funguje i mnoho dalších gui aplikací.
Můžete například nainstalovat xeyes a řekne to nainstalovat x11-apps a instalací, která nainstaluje GTK, kterou používá mnoho aplikací GUI. Ale jde o to, že jakmile budete mít správně nastavený DISPLAY a x server na Windows, pak většina věcí, které by fungovaly na nativním ubuntu, bude fungovat pro WSL.
Upravit 4. 9. 2019 :Dnes jsem měl problémy s 'nelze získat zdroje obrazovky' po aktualizaci některých knihoven. Nainstaloval jsem tedy VcXsrv a použil jej místo Xming. Stačí nainstalovat z https://sourceforge.net/projects/vcxsrv/ a spustit xlaunch.exe, vybrat více oken, další další další ok. Pak vše fungovalo.
Upravit pro uživatele WSL 2 23. 6. 2020 WSL2 (aktuálně insider fast ring) má podporu GPU/docker, takže stojí za to upgradovat. Nicméně běží ve vm. Pro WSL 2 postupujte podle stejných kroků 1-4 a poté:
- IP není localhost. je to v resolv.conf, takže místo toho spusťte toto (a zahrňte do ~/.bashrc):
export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
- Nyní znovu zkontrolujte bránu firewall:Zabezpečení systému Windows -> Brána firewall a ochrana sítě -> Povolit aplikaci přes bránu firewall -> ujistěte se, že VcXsrv má zaškrtnuté veřejné i soukromé. (Při prvním spuštění xlaunch se může zobrazit výzva k povolení přes firewall. Funguje to také. Pokud VcXsrv není v seznamu aplikací, můžete jej přidat ručně, např. z 'C:\program files\vcxsrv\vcxsrv .exe')
- Spusťte VcXsrv se zaškrtnutou možností „Zakázat řízení přístupu“
Poznámka:Několik uživatelů WSL2 dostalo chybu jako couldn't connect to display "172.x.x.x:0"
. Pokud ano, zkuste zkontrolovat IP adresu uloženou v DISPLAY pomocí tohoto příkazu:echo $DISPLAY
. Pokud se zobrazená IP zdá být nesprávná (tj. „8.8.8.8“ nebo jiná nefunkční IP adresa), musíte změnit kód v ~/.bashrc
zobrazený v bodě 5 na něco, co získá IP adresu vaší instance. Jeden uživatel řekl, že to funguje:export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
. U některých jiných to však nefungovalo. YMMV, ale stačí najít svou IP a použít if pro DISPLAY. Pro většinu uživatelů WSL2 funguje příkaz v #5.
Úpravy pro Windows 11 :Pokud vás MS přesvědčil, abyste vyhodili svůj starý počítač a koupili si počítač s TPM, a tak jste získali Windows 11, získáte GUI zdarma. Doufám, že přidají cestu upgradu, aby to udělali na Windows 10, protože Win10 bude jako XP a vydrží dlouho od doby, kdy se MS rozhodl, že potřebujete nejnovější počítač, i když Win11 by na starých počítačích fungoval dobře.
Pro WSL2 pomocí vydání Ubuntu Focal Fossa jsem si stáhl a nainstaloval VcXsrv na Windows. Používám tuto konfiguraci:
Nevím pro Nativní OpenGL ale zdá se důležité zakázat řízení přístupu.
Nyní musíte exportovat proměnnou env DISPLAY
ve WSL.
Správnou adresu jsem našel v /etc/resolv.conf
, ale ten, který se nachází v ifconfig
výsledek není. Následující příkaz tedy nefunguje pro mě:
export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
Tuto IP adresu lze také nalézt v příkazu ipconfig
do CMD.exe
příkazový kontext. Vyhledejte vEthernet (WSL)
, to by měl být ten.
Nyní můžete otestovat, že vše funguje, pouhým spuštěním xcalc ve vašem WSL prostředí. Pokud xcalc není přítomen, nainstalujte jej:
sudo apt-get update && sudo apt-get install x11-apps
Příkaz xcalc by měl ve Windows otevřít aplikaci, která vypadá takto:
Pokud to funguje, znamená to, že připojení k vašemu X-serveru je možné, ale možná budete muset nainstalovat nějaký extra balíček pro Python jako:
sudo apt-get install python3.x-tk
Změňte .x
podle vaší verze pythonu.
Chcete-li, aby matplotlib fungoval s GTKAgg na Bash na Ubuntu ve Windows , já:
- nainstaloval VcXsrv pod Windows (ale věci by měly fungovat stejně jako Xming)
- nastavte DISPLAY, jak je uvedeno výše [
export DISPLAY=localhost:0.0
(přidat do ~/.bashrc, aby byl trvalý)] - provedeno
sudo pip uninstall matplotlib
- následuje
sudo apt install python-matplotlib
- aktualizoval matplotlibrc na čtení
backend : GTKAgg
(spíše nežbackend : agg
) - Také jsem spustil
sudo apt-get install python-gtk2-dev
, ale to nemusí být nutné.
Zdá se, že je nutné odinstalovat matplotlib nainstalovaný pipem a znovu jej nainstalovat přes apt, protože pip neobsahuje rozšíření C potřebná ke spuštění GTK, ale verze apt ano.