【Mac】PyAutoGUIが正常に動作しない場合の対応方法について

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

PyAutoGUIってご存知ですか。

PyAutoGUIは、PythonのGUI自動化モジュールです。
これを利用すれば、マウスとキーボードの動きをプログラムで制御することができるので、
マウスとキーボードで操作するものについては、ほぼ自動化することができます。

RPAツールを導入すれば、簡単にPCの自動化はできますが、PyAutoGUIならば無料で使うことができます。

動作確認環境

  • OS:OS X Mojave 10.14.3
  • Python: 3.6.3

PyAutoGUIを使ってみる

さっそくPyAutoGUIをインストールしましょう。pipを利用します。

pip install pyautogui

インストールできたら、簡単なプログラムを用意します。

import pyautogui
import time

def main():
    time.sleep(3)
    position = pyautogui.position()
    pyautogui.click(position)

if __name__ == '__main__':
    main()

少し解説しますと、pyautogui.position()で現在のマウスカーソルの位置を取得します。
続いて、pyautogui.click()にpyautogui.position()で取得したカーソル位置を渡して、指定した位置でクリックしています。
なお、マウスカーソルを移動する時間を確保するためにプログラム実行時に3秒停止させています。

実行してみましょう。

実行してみたところ下記のようなエラーが表示されました。

Traceback (most recent call last):
  File " - /pyautogui/_pyautogui_osx.py", line 5, in 
    import Quartz
ModuleNotFoundError: No module named 'Quartz'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "sample.py", line 1, in 
    import pyautogui
  File " - /pyautogui/__init__.py", line 148, in 
    from . import _pyautogui_osx as platformModule
  File " - /pyautogui/_pyautogui_osx.py", line 7, in 
    assert False, "You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html"
AssertionError: You must first install pyobjc-core and pyobjc: https://pyautogui.readthedocs.io/en/latest/install.html

読んでみると、pyobjc-coreとpyobjcをインストールするようにと書いてあります。
インストールしてみましょう。

pip install pyobjc-core
pip install pyobjc

実行すると、エラーは表示されなくなりました。
ただ、エラーは解消されましたが、pyautogui.click()が正常に動作していないようです。
現在のマウスカーソル位置でクリックが実行されていないようです。

調べてみると、PyAutoGUIのGithubページのissueにMojaveだと動作しないという書き込みを見つけました。

Pyautogui doesn’t seem to work on macOS Mojave · Issue #247 · asweigart/pyautogui

Mojaveから新しいセキュリティ機能が追加されたため、動作しなくなっていたようです。
対応方法を書いてありましたので設定してきましょう。

システム環境設定からセキュリティとプライバシーを開きます。
プライバシーを選択し、左側のリストからアクセシビリティをクリックします。
右側に表示された、下のアプリケーションにコンピュータの制御を許可にターミナルを追加します。
(iTermを使っている場合は、iTermを追加)

では、プログラムを実行してみます。
無事にクリックできました。

今回は以上です。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*

CAPTCHA