WSL2(Ubuntu)でPySimpleGUI 立上げ(tkinter がないエラーの解決, DISPLAY設定)
個人メモとして残します。
PySimpleGUI(Pythonで書けるGUIライブラリ) を動かしたいために、立上げ。
環境 :Ubuntu20.04 (Windows10のWSL2でinstall)
Python :Python3
$ pip install PySimpleGUI
で入れたんだが、こんなエラー
$ python3
Python 3.6.9 (default, Jan 26 2021, 15:33:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import PySimpleGUI as sg
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/kawaai/.local/lib/python3.6/site-packages/PySimpleGUI/__init__.py", line 2, in <module>
from .PySimpleGUI import *
File "/home/kawaai/.local/lib/python3.6/site-packages/PySimpleGUI/PySimpleGUI.py", line 96, in <module>
import tkinter as tk
ModuleNotFoundError: No module named 'tkinter'
下記の記事を拝見し、
sudo apt-get install python3-tk
入れたら解決。
今度はこんなエラーが
_tkinter.TclError: no display name and no $DISPLAY environment variable
下記の記事にあるように、Xサーバを立てないと、WSLからウィンドウを生成できない。たしかに
こちらを参考に「VcXsrv Windows X Server」をダウンロードして、X11-appsもインストール。
$ sudo apt install x11-apps
Xlaunchというアプリで設定ができるのだが、2つ注意。
3つ目の画面で
・Extra settings: 全てにチェック(デフォルトだと、Disable access controlはチェックされていない)
・additional parameter ・・ には、”-ac”を追加する
(下記参照)
次にDISPLAYのパスを通すべく、こちらのサイトを参考に、.profileに記載
$ vi ~/.profile
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
を追加して閉じる。Ubuntuを立ち上げ直す、というかPC再起動した方がよさそう
$ xeyes
で確認。これで目のポップアップが出てこればOK