我正在尝试编写一个小应用程序,它允许通过网页发送dbus命令(到Amarok)。
我正在使用python + mod_wsgi,因为我需要使用与Amarok相同的用户运行脚本。
当我通过普通的shell连接到Amarok时,它可以工作。但在连接脚本后,我收到以下错误:
DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: /usr/bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
连接到Amarok的代码:
import dbus
conn = dbus.SessionBus().get_object('org.kde.amarok','/Player')
你知道我应该怎样做才能通过dbus连接到Amarok? 非常感谢您的帮助!
更新:
我将为您提供有关配置的其他信息:
的httpd.conf:
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /amarok /var/www/amarok-python/config.wsgi
WSGIDaemonProcess l user=wojtas group=wojtas processes=1
WSGIProcessGroup l
config.WSGI:
import sys
path='/var/www/amarok-python'
if path not in sys.path:
sys.path.append(path)
import index
application=index.application
应用程序代码(index.py):
import dbus
from os import getuid
def connect():
conn = dbus.SessionBus().get_object('org.kde.amarok','/Player')
conn.Start()
return conn
def application(environ,start_response):
status= '200 OK'
connection=connect()
output=str(getuid())
response_headers= [('Content-type','text/html'), ('Content-Length', str(len(output)))]
start_response (status,response_headers)
return [output]
答案 0 :(得分:0)
问题是我没有设置DISPLAY变量,这是连接dbus所必需的。 您可以查看此网页上的小教程: http://blog.wojtass.pl/tutorial-control-amarok-remotely-through-web-browser/