X服务器远程连接问题
报错1
ImportError: this platform is not supported: ('failed to acquire X connection: Bad displayname ""', DisplayNameError('')) Try one of the following resolutions: * Please make surethat you have an X server running, and that the DISPLAY environment variable is set
correctly
这个错误表明程序依赖于 X 服务器,但它无法找到 X 服务器或者 $DISPLAY
环境变量没有设置正确。
在你的情况下,程序在尝试导入 pynput
模块时出现了问题。pynput
模块通常用于捕获键盘输入,它需要一个可用的 X 服务器来工作。
报错2
[2370019:0406/114907.428655:ERROR:ozone_platform_x11.cc(239)] Missing X server or $DISPLAY
[2370019:0406/114907.428695:ERROR:env.cc(255)] The platform failed to initialize. Exiting.
The futex facility returned an unexpected error code.
在多用户环境下,每个用户可以通过设置不同的 DISPLAY 环境变量来指定他们要使用的 X 服务器显示编号。一般来说,X 服务器的显示编号从":0"开始,然后依次递增。当用户启动图形界面应用程序时,程序会根据 DISPLAY 环境变量的值来确定要连接的 X 服务器。
例如,如果用户 A 想在自己的 X 服务器上运行图形界面应用程序,他可以设置 DISPLAY 环境变量为":0",而用户 B 可以将其设置为":1",以此类推。
在多用户系统中,通常会有一些约定或管理工具来协调和分配 X 服务器的显示编号,以确保不同用户之间的图形界面应用程序不会产生冲突。
解决方法
-
查看要转发X11服务的服务器编号
ps aux | grep Xorg
- 指定要使用X11的服务器编号:如果是单用户,指定":0"即可,如果不行,以此类推,可以指定":1"试试;如果是多用户,非服务器本地登录账户,为远程登录账户,根据连接服务器的编号来指定,如上,指定为":10"即可。
export DISPLAY=:0 export DISPLAY=:10