概要
本稿では、PyAutoGUIを使用している最中に他の作業が出来ない(マウス、キーボードが使用できない)問題を、仮想環境(Hyper-V)を使用することで解決する手法を示す。
初めに
PythonのPyAutoGUIを使って作業の自動化をしている最中、こんなことをよく考えませんか?
「プログラム実行中も他の作業がしたい」
一度使用した方ならご存知の通り、PyAutoGUIは自動でカーソルまたはキーボードを自動で操作し作業の自動化を行える強力なライブラリですが、その反面実行中は基本的に他の作業が出来ません。
どうすればいいか考えて見た結果以下の結論に行き着きました。
「「 仮想環境で使えば実現可能ではないか 」」
ということで実際に試し、結果として上手くいきましたのでその方法を残すことにしました。
環境
以下は私の実行環境です。
- CPU : AMD Ryzen 7 3700X 8-Core Processor 3.60 GHz
- RAM : 16.0 GB
- Local OS : Windows 11 Home 22H2
- Virtual OS : Windows 11 Enterprise Evaluation
- Hyper-V マネージャー : 10.0.2262.1
- Python : 3.11.4
- PyAutoGUI : 0.9.54
なお、PythonとPyAutoGUIは仮想環境内のバージョンです。
仮想環境(Hyper-V)の導入
Windowsには標準で仮想環境を使用できるHyper-Vというソフトが用意されています。
詳しい内容はMicrosoft公式で紹介されていますので、以下のサイトを確認してください。
Hyper-Vのインストール(Home Editionのみ)
Home Editionでは標準でHyper-Vがインストールされていないため、手動でインストールする必要があります。
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
上記のバッチファイルを適当な場所に作成し、管理者権限で実行してください。インストール後、再起動するとインストールが完了します。
Hyper-Vの有効化
次にインストールしたHyper-Vを有効化します。
設定 → アプリ → 下の方にある「Windowsのその他の機能」を選択します。
ここの
- Hyper-V
- 仮想マシン プラットフォーム
の2つにチェックを入れ、再起動してください。
サイトによっては
『Windowsハイパーバイザープラットフォーム』
にもチェックを入れるようにしているところもありますが、私の場合はチェックを付けなくても問題なく動いているため、個人の判断にお任せします。
再起動後、「すべてのアプリ」にある「Windowsツール」を起動すると、画像のように「Hyper-V クイック作成」と「Hyper-V マネージャー」が追加されています。
「Hyper-V クイック作成」を起動すると以下の画像のウィンドウが表示されます。
あとは「Windows 11 開発環境」を選択し、「仮想マシンの作成」をクリックすると仮想マシンの作成が開始されます。
Windows 11 開発環境以外にもUbuntuやISOイメージを用意すれば他のOSの仮想マシンを作成できます
大体10分から20分くらいほど掛かり、仮想マシンの作成は完了します。以下は起動後の画面です。
あとは、通常通りにPythonをインストールし、必要なモジュール、ライブラリをインストールして任意のプログラムを実行してください。
実行例
左は私が、右は仮想環境でPyAutoGUIが自動でテキストファイルに書き込みをしています(私のタイピングが遅いのはご愛嬌)。
試したところ、locateOnScreenによる画像認識も問題なく動いているため、ローカル環境と同じようにコーディング出来るかと思います。
仮想マシンのウィンドウにローカルのカーソルが入ってしまうと、そちらを仮想マシンのカーソルの位置だとプログラムが誤認識してしまいます。
プログラムの実行中は仮想マシンのウィンドウ上にカーソルをのせないように気をつけてください。
おわりに
今回は、仮想環境でPyAutoGUIを動かしプログラム実行中でも他の作業が出来る方法を紹介しました。
導入が少々手間ですが、一度導入すればあとは簡単に出来るので参考にしていただけると幸いです。