プロットは、Visual Studio Code を使用して WSL で表示することもできます。これには、2019 年 6 月のリリースの時点で、「プロット ビューアー」が含まれています。
通常の .py ファイルで、コメント文字列 #%%
を挿入する コードを Jupyter (IPython) セルとしてマークし、コード レンズに Run Cell
のオプションを表示します .さらに、Python ファイル内で右クリックすると、次のオプションが含まれます:
Python インタラクティブ ウィンドウで現在のファイルを実行
VS Code の 2019 年 6 月リリースより:
<ブロック引用>2019 年 6 月の更新には、人気のある matplotlib プロットなどの画像プロットを操作するために使用できるまったく新しいプロット ビューアーが含まれていました。
プロットをダブルクリックするか、Python インタラクティブ ウィンドウでプロット画像にカーソルを合わせると表示される「画像を展開」ボタンをクリックして、試してみることができます。
プロット ビューアを使用すると、パン、ズーム イン/アウト、現在のセッション内のプロットをナビゲートし、プロットを PDF、SVG、または PNG 形式にエクスポートできます。
わかりましたので、次のように動作させました。 Windows に Ubuntu があり、anaconda python 3.6 がインストールされています。
<オール>sudo apt-get update
sudo apt-get install python3.6-tk
(別の python*-tk
をインストールする必要があるかもしれません 使用している Python のバージョンによって異なります)pip install matplotlib
(matplotlib の場合。ただし、他の多くの機能も動作するようになりました)export DISPLAY=localhost:0.0
(~/.bashrc
に追加 永続化します。 WSL2 を参照 以下)とにかく、結局のところ、wsl 上の ubuntu で実行されているこのコードはそのまま機能しました:
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()
結果:
おそらく、これは Jupyter ノートブックなどを介して行う方がよいでしょうが、Linux のサブシステム上の Windows の Ubuntu で基本的なコマンドライン python matplotlib 機能を使用すると便利です。これにより、他の多くの GUI アプリも機能します。
たとえば、xeyes をインストールすると、x11-apps をインストールするように指示されます。インストールすると、多くの GUI アプリが使用する GTK がインストールされます。しかし重要なのは、DISPLAY を正しく設定し、Windows で x サーバーを使用すると、ネイティブの ubuntu で機能するほとんどの機能が WSL でも機能するということです。
2019 年 9 月 4 日編集 :今日、いくつかのライブラリをアップグレードした後、「画面リソースを取得できません」という問題が発生しました。そこで、VcXsrv をインストールし、Xming の代わりにそれを使用しました。 https://sourceforge.net/projects/vcxsrv/ からインストールして xlaunch.exe を実行し、複数のウィンドウを選択して、次の次の次の次へ進むだけです。その後、すべてが機能しました。
WSL 2 ユーザー向けの編集 2020-06-23 WSL2 (現在インサイダー ファスト リング) は GPU/docker をサポートしているため、アップグレードする価値があります。ただし、vmで実行されます。 WSL 2 の場合は、同じ手順 1 ~ 4 に従います。
- IP が localhost ではありません。 resolv.conf にあるので、代わりにこれを実行します (そして ~/.bashrc に含めます):
export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
- ここで、ファイアウォールを再確認します:Windows セキュリティ -> ファイアウォールとネットワーク保護 -> ファイアウォールを通過するアプリを許可 -> VcXsrv でパブリックとプライベートの両方がチェックされていることを確認します。 (xlaunch を初めて起動するときに、ファイアウォールの通過を許可するプロンプトが表示される場合があります。これも機能します。また、VcXsrv がアプリのリストにない場合は、「C:\program files\vcxsrv\vcxsrv」などから手動で追加できます。 .exe')
- 「アクセス制御を無効にする」にチェックを入れて VcXsrv を起動します
注:一部の WSL2 ユーザーは couldn't connect to display "172.x.x.x:0"
のようなエラーを受け取りました .その場合は、次のコマンドで DISPLAY に保存されている IP アドレスを確認してください:echo $DISPLAY
.表示された IP が間違っていると思われる場合 (つまり、「8.8.8.8」または別の機能しない IP アドレス)、~/.bashrc
のコードを変更する必要があります。 ポイント5で、インスタンスのIPアドレスを取得するものを示しました。 1 人のユーザーがこれはうまくいったと言っています:export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
.ただし、他の一部の人にとっては機能しませんでした。 YMMVですが、IPを見つけて、DISPLAYの場合に使用してください。ほとんどの WSL2 ユーザーにとって、#5 のコマンドは機能します。
Windows 11 用に編集 :MS が古いコンピューターを捨てて TPM 付きのコンピューターを購入するよう説得し、Windows 11 を入手した場合は、GUI を無料で入手できます。 Win10 は XP のようなものであり、MS が最新のコンピューターが必要であると判断したため、Windows 10 でそれを行うためのアップグレード パスを追加することを願っています。
WSL2 の場合 Ubuntu Focal Fossa リリースを使用して、VcXsrv をダウンロードしてインストールしました Windows で。私はこの構成を使用します:
ネイティブ OpenGL についてはわかりません しかし、アクセス制御を無効にすることが重要と思われます.
ここで、環境変数 DISPLAY
をエクスポートする必要があります
/etc/resolv.conf
で正しいアドレスを見つけました 、しかし ifconfig
にあるもの 結果はそうではありません。したがって、次のコマンドは機能しません 私にとって:
export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')
その IP アドレスは、コマンド ipconfig
でも見つけることができます。 CMD.exe
に コマンド コンテキスト。 vEthernet (WSL)
を検索
これで、WSL 環境で xcalc を実行するだけで、すべてが機能していることをテストできます。 xcalc が存在しない場合は、インストールしてください:
sudo apt-get update && sudo apt-get install x11-apps
xcalc コマンドは、Windows では次のようなアプリケーションを開く必要があります:
動作している場合、X サーバーへの接続は可能ですが、次のような Python 用の追加パッケージをインストールする必要があるかもしれません:
sudo apt-get install python3.x-tk
.x
を変更 Python のバージョンに応じて。
matplotlib を Windows 上の Ubuntu 上の Bash で GTKAgg と連携させるには 、私:
<オール>export DISPLAY=localhost:0.0
] (~/.bashrc に追加して永続的にします)]sudo pip uninstall matplotlib
sudo apt install python-matplotlib
backend : GTKAgg
を読み取りました (backend : agg
ではなく )sudo apt-get install python-gtk2-dev
も実行しました 、しかしこれは必要ないかもしれません。pip には GTK の実行に必要な C 拡張機能が含まれていませんが、apt バージョンには含まれているため、pip でインストールされた matplotlib をアンインストールし、apt を介して再インストールする必要があるようです。