Запуск RPi4s с Ubuntu Server 19.10, Python 3.7.5, python3-xlib==0.15
и pyautogui==0.9.50
. Все запускается как пользователь по умолчанию ubuntu
.
Я пытаюсь Machine A
отправить команду s sh на Machine B
, чтобы запустить программу GUI и выполнить некоторую обработку. Я получаю XAUTHORITY
ошибок.
Примечание: я не хочу видеть GUI на Machine A
мониторе - но приложение, работающее на 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
до запуска рабочего процесса (ie, однократное редактирование xauth
)? Это закрытая система, поэтому безопасность не является проблемой!