我正在用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的配置不好。
5条答案
按热度按时间8cdiaqws1#
临时解决方法是
http://ubuntuforums.org/showthread.php?t=2290602
axr492tv2#
好的,这是python3-xlib中的bug。详细信息请参见https://github.com/LiuLang/python3-xlib/issues/6。
jvlzgdj93#
此问题与x显示服务器连接策略有关,默认情况下非常严格
通过允许将要执行该代码的用户访问,可以解决此问题
如果你是要执行普洛弗的用户,那么要粘贴到shell中的代码是
否则,您可以使用将要运行代码的用户的用户名切换出
$USER
。使此更改永久化的一种方法是将该行代码添加到您的登录脚本中,您的用户或文件
/etc/profile/
中的任何用户的ID为est~/.profile
。如果您希望抑制命令输出文本,则可以将输出重定向到/dev/null
,使整个命令:在试图运行普洛弗时也遇到了同样的问题。
5hcedyr04#
永久正确的解决方案是将允许的主机和用户添加到
/etc/Xn.hosts
,其中n代表显示编号(例如/etc/X0.hosts
)。以下内容将允许localhost的所有用户(无尾随空格):ltqd579y5#
这肯定与权限有关。要获得超级用户权限,在Linux上您只需键入:
现在再次运行python文件
希望这有帮助!