在 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
)?這是一個封閉的系統,因此安全性不是問題!