はじめに
PyAutoGUI (ドキュメント) は、Pythonスクリプトによるマウスやキーボードの自動操作を可能にするライブラリです。この記事ではWSL2でPyAutoGUIをインストールし、キーボードから文字を自動で入力することを目指します。
環境
- Windows 10
- Ubuntu 18.04 LTS (WSL2)
- Python 3.6.9
手順
- (Ubuntu) pipのインストール
- (Ubuntu) PyAutoGUIのインストール
- (Windows) VcXsrvのインストール・起動
- (Ubuntu) VcXsrvの設定
- (Ubuntu) ブラウザのインストール
の手順で進めます。
1. (Ubuntu) pipのインストール
pipはPythonのパッケージ管理システムです。PyAutoGUIのインストールに利用します。
bash
$ sudo apt update -y
$ sudo apt install -y python3-pip
$ python3 -m pip install --upgrade pip
参考
2. (Ubuntu) PyAutoGUIのインストール
PyAutoGUIはPythonのライブラリです。マウスやキーボードの自動操作を可能にします。
bash
$ sudo apt install -y scrot python3-tk python3-dev
$ python3 -m pip install pyautogui
参考
3. (Windows) VcXsrvのインストール・起動
VcXsrvはWindowsで動作するXサーバです。LinuxのGUIアプリケーションをWindowsで利用できるようになります。
インストール
-
VcXsrvのダウンロードサイトからVcXsrvのインストーラをダウンロード
- インストーラを起動
- オプションを選択し"Next"をクリック
- インストールするフォルダを選択し"Install"をクリック
- インストールが完了したら"close"をクリック
起動
- Windowsのスタートメニュー > "VcXsrv" > "XLaunch" をクリック
- "Multiple windows"を選択し「次へ」をクリック
- "Start no client"を選択し「次へ」をクリック
- すべてのチェックボックスにチェックを入れ「次へ」をクリック
- 「完了」をクリック
- (オプション) Windows起動時にVcXsrvを自動で起動する設定
参考
4. (Ubuntu) VcXsrvの設定
UbuntuにVcXsrvの存在を教えるために、環境変数DISPLAY
にIPアドレスを設定します。環境によって設定する値は異なるようです。
-
export DISPLAY=$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0.0
または export DISPLAY=$(route.exe print | grep 0.0.0.0 | head -1 | awk '{print $4}'):0.0
自分の環境では2番目のほうで動きました。
$ vi ~/.bashrc
-----
...
# add for VcXsrv
export DISPLAY=$(route.exe print | grep 0.0.0.0 | head -1 | awk '{print $4}'):0.0
-----
$ exec $SHELL -l
またVcXsrvへ接続するための権限設定をおこないます。
$ touch ~/.Xauthority
$ xauth generate (DISPLAYに設定したIPアドレス):0 . trusted
動作確認
$ sudo apt install -y x11-apps
$ xeyes
参考
- WSL2におけるVcXsrvの設定 - Qiita
- Can't use X-Server in WSL 2 · Issue #4106 · microsoft/WSL
- ubuntu - WSL 2: Run Graphical Linux Desktop Applications from Windows 10 Bash Shell "Error E233: cannot open display" - Stack Overflow
- .xauthority does not exist - Linux Error - xauth not creating .xauthority file
5. (Ubuntu) ブラウザのインストール
今回はGoogle Chromeをインストールします。試していませんが他のブラウザでも大丈夫だと思います。
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo apt update
$ sudo apt install -y google-chrome-stable unifont
動作確認
$ google-chrome
参考
PyAutoGUIでキーボード自動入力
簡単なプログラムを動かしてみます。
test.py
import pyautogui
import webbrowser
import time
# DeepL翻訳を開きます
webbrowser.open("https://www.deepl.com/ja/translator")
# 開くまでラグがあるため5秒ほど待ちます
time.sleep(5)
# "Hello, world!"を日本語に翻訳します
pyautogui.write("Hello, world!")
おわりに
今回はWSL2でPyAutoGUIを動かしてみました。WSLgを使えばもっと簡単にできるかも…?今度試してみようと思います。