在 Ubuntu Server 19.10、Python 3.7.5python3-xlib==0.15
和pyautogui==0.9.50
.一切都以默认用户身份运行ubuntu
。
我正在尝试Machine A
发送 ssh 命令来Machine B
运行 GUI 程序并进行一些处理。我收到一些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.
我还尝试在viasubprocess
中的通话中设置环境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
)?这是一个封闭的系统,因此安全性不是问题!