X服务器远程连接问题解决:Bad displayname ““‘或Missing X server or $DISPLAY

时间:2024-04-07 07:02:12

X服务器远程连接问题

报错1

ImportError: this platform is not supported: ('failed to acquire X connection: Bad display
 name ""', DisplayNameError('')) Try one of the following resolutions: * Please make sure
 that 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 服务器的显示编号,以确保不同用户之间的图形界面应用程序不会产生冲突。

解决方法

  1. 查看要转发X11服务的服务器编号f526dc9a4f2e403884ca12b746f2e302.png

    ​​​​​​​ps aux | grep Xorg
  2. 指定要使用X11的服务器编号:如果是单用户,指定":0"即可,如果不行,以此类推,可以指定":1"试试;如果是多用户,非服务器本地登录账户,为远程登录账户,根据连接服务器的编号来指定,如上,指定为":10"即可。
    export DISPLAY=:0
    export DISPLAY=:10