Ubuntu Server 19.10、Python 3.7.5、python3-xlib==0.15
およびRaspberry Pi 4 を実行していますpyautogui==0.9.50
。すべてがデフォルトubuntu
ユーザーとして実行されます。
Machine A
GUI プログラムを実行して何らかの処理を実行するために、ssh コマンドを送信しようとしていますMachine B
。いくつかエラーが発生していますXAUTHORITY
。
Machine A
注:モニターに GUI を表示したくありませんが、実行中のアプリにはMachine B
GUI が必要です。
だからMachine A
私は走り続ける:
subprocess.Popen(['ssh', 'ubuntu@ip_of_machine_B', 'python3', '/path/to/my_script.py'])
でMachine B
、my_script.py
実行する
subprocess.call(['python3', '/path/to/gui_script.py'])
gui_script.py
最後に、
import os
os.environ['DISPLAY'] = ':0'
os.environ['XAUTHORITY'] = '/run/user/1000/gdm/Xauthority'
import subprocess
import pyautogui
subprocess.Popen(['the_gui_app'])
# Do stuff with pyautogui and the app.
残念ながら、gui_script.py
次のものを投げています
Xlib.error.DisplayConnectionError: Can't connect to display ":0": No protocol specified.
また、subprocess
通話中に環境を設定してみましたmy_script.py
my_env = os.environ.copy()
my_env['DISPLAY'] = ':0'
my_env['XAUTHORITY'] = '/run/user/1000/gdm/Xauthority'
subprocess.call(['python3', '/path/to/gui_script.py'], env=my_env)
しかし、それも失敗しました。
私の推測では、Machine B
ワークフローを実行する前に、 のどこかで設定を変更する必要があります (つまり、 を 1 回だけ編集するxauth
)。これはクローズド システムなので、セキュリティは問題になりません。