python 如何修复错误Xlib.error.显示连接错误:无法连接到显示器“:0”:b '未指定协议\n'

n6lpvg4x  于 2023-02-02  发布在  Python
关注(0)|答案(5)|浏览(399)

我正在用python3和XLib做一些程序。
在我的PC与Ubuntu 14.04一切正常,但当我尝试运行我的应用程序在我的笔记本电脑与手动安装的Xorg我得到异常:

Xlib.error.DisplayConnectionError: Can't connect to display ":0": b'No protocol specified\n'

在线:

self.__display = Xlib.display.Display()

这是怎么回事?如何解决这个问题,使它可以在每一个Linux上工作?

编辑:

这看起来不像X11: run a gnome app as another user的重复。在我的两台计算机上,我有相同的用户和组,所以这个问题可能与缺乏运行我的程序的权限无关。
它一定是其他的东西,X的配置不好。

axr492tv

axr492tv2#

好的,这是python3-xlib中的bug。详细信息请参见https://github.com/LiuLang/python3-xlib/issues/6

jvlzgdj9

jvlzgdj93#

此问题与x显示服务器连接策略有关,默认情况下非常严格
通过允许将要执行该代码的用户访问,可以解决此问题
如果你是要执行普洛弗的用户,那么要粘贴到shell中的代码是

xhost +local:$USER

否则,您可以使用将要运行代码的用户的用户名切换出$USER
使此更改永久化的一种方法是将该行代码添加到您的登录脚本中,您的用户或文件/etc/profile/中的任何用户的ID为est ~/.profile。如果您希望抑制命令输出文本,则可以将输出重定向到/dev/null,使整个命令:

xhost +local:$USER > /dev/null

在试图运行普洛弗时也遇到了同样的问题。

5hcedyr0

5hcedyr04#

永久正确的解决方案是将允许的主机和用户添加到/etc/Xn.hosts,其中n代表显示编号(例如/etc/X0.hosts)。以下内容将允许localhost的所有用户(无尾随空格):

local:
ltqd579y

ltqd579y5#

这肯定与权限有关。要获得超级用户权限,在Linux上您只需键入:

$ sudo su
<input your root password>

现在再次运行python文件
希望这有帮助!

相关问题