Запустить программу с графическим интерфейсом на удаленной машине через подпроцесс Python ssh

Запустить программу с графическим интерфейсом на удаленной машине через подпроцесс Python ssh

Запуск Raspberry Pi 4 с Ubuntu Server 19.10, Python 3.7.5 python3-xlib==0.15и pyautogui==0.9.50. Все запускается от имени ubuntuпользователя по умолчанию.

Я пытаюсь отправить Machine Aкоманду ssh, чтобы Machine Bзапустить программу с графическим интерфейсом и выполнить некоторую обработку. Я получаю некоторые XAUTHORITYошибки.

Примечание: я не хочу видеть графический интерфейс на Machine Aмониторе, но приложению, работающему на нем, Machine Bнужен графический интерфейс.

Итак, 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перед запуском рабочего процесса (т. е. однократное редактирование xauth)? Это закрытая система, поэтому безопасность не является проблемой!

Связанный контент