WSL2で、GUIへの出力もする開発作業をpythonで始める人向け。
WSL2セットアップ
省略。
MicrosoftStoreでUbuntu22.04をインストールし、Ubuntuを起動
Ubuntuにpythonをセットアップ
Ubuntu22.04ならばPython3.10がデフォルトでインストールされている。
ためしにHelloworldを実施
GUIを使用するための環境構築
Xserver(windows上で表示するためのアプリ)をWindowsに導入することで、WSL上で実行したGUIがwindowsに表示されるようにする。
以下のページを参考にした。
https://stackoverflow.com/questions/43397162/show-matplotlib-plots-and-other-gui-in-ubuntu-wsl1-wsl2
VcXsrvを導入/起動
VcXsrvはXserverの一種。ほかにもお気に入りのものがあればそちらを。
以下のサイトからダウンロードし、windowsにインストールする。
https://sourceforge.net/projects/vcxsrv/
C:\Program Files\VcXsrv\xlaunch.exe を起動する。
以下の選択肢を指定してFinish。(ほかはたぶんお好み)
Start no client
Disable access control
GUIが表示されるか確認
PythonでGUI画面を表示する処理を実行し、動作確認する。
他の方法でもよし。
以下、すべてubuntu側での操作
まずはpipが入っていなければインストール実施する。
$ sudo apt install python3-pip
<省略>
$ pip -V
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
Tkinter(PythonでGUIを開発するためのライブラリ)を導入する。
sudo apt-get install python3-tk
Tkinterのバージョンを確認
$ python3
Python 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tkinter.TkVersion
8.6
matplotlibをインストール
$ pip install matplotlib
環境変数を設定し、WSL2からVcXsrvに対して画面が出力されるようにする。
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 export LIBGL_ALWAYS_INDIRECT=1
起動したら必ず設定されるように、bashrcに記載してもよい
$ vi ~/.bashrc
# 末尾に以下を登録して保存
# Show GUI to windows from WSL2
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 export LIBGL_ALWAYS_INDIRECT=1
GUIにHelloWolrdと表示するPythonスクリプトを作成。
from tkinter import *
root = Tk()
a = Label(root, text ="Hello World")
a.pack()
root.mainloop()