python脚本中的pynotify在KDE中与sudo一起运行时出错

python脚本中的pynotify在KDE中与sudo一起运行时出错,python,pynotify,Python,Pynotify,我只是想在KDE环境中显示通知。所以我尝试了 pytest.py from pynotify import * init("test") Notification("test", "test").show() import os os.setuid(1000) from pynotify import * init("test") Notification("test", "test").show() 然后我运行sudo python pynotifytest.py,得到的错误是: No p

我只是想在KDE环境中显示通知。所以我尝试了 pytest.py

from pynotify import *
init("test")
Notification("test", "test").show()
import os
os.setuid(1000)
from pynotify import *
init("test")
Notification("test", "test").show()
然后我运行
sudo python pynotifytest.py
,得到的错误是:

No protocol specified
/usr/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display warnings.warn(str(e), _gtk.Warning)
 ----> 3 Notification("test", "test").show()

Error: Command line `dbus-launch --autolaunch=cb94cb23372d0aff09ce7d8a000024b4 --binary-syntax --close-stderr' exited with non-zero exit status 1: No protocol specified\nAutolaunch error: X11 initialization failed.
然后我试图放弃特权 pytest.py

from pynotify import *
init("test")
Notification("test", "test").show()
import os
os.setuid(1000)
from pynotify import *
init("test")
Notification("test", "test").show()
但我还是在KDE中遇到了同样的错误。在gnome shell和awesome中,通知按预期显示。我有一个python程序必须以root权限运行,所以我不能将sudo抛在后面。1000是我的用户登录X的uid

我的linux发行版是Arch。谢谢

“它适合我”——请提供您的系统的更多详细信息。它在一顶软呢帽15上工作,SELinux在这里被禁用。还要注意的是,您遇到的问题是GTK+部件,而不是pynotify本身


另外-您的用户“1000”是否登录到图形环境中?当然,如果您试图与登录用户或root用户以外的其他用户一起使用windows,这将不起作用。

要允许sudo在X中启动图形应用程序,您需要添加:

Defaults env_keep += "HOME"

去做

对不起。我已经更新了。我的uid是1000,我登录了x。我的环境是KDE,我在gnome中测试了脚本,非常棒,没有发生错误。