【问题标题】:Can't connect to org.freedesktop.UDisks via DBus-Python无法通过 DBus-Python 连接到 org.freedesktop.UDisks
【发布时间】:2011-05-07 18:15:27
【问题描述】:

这是我第一次使用 DBus,请多多包涵。 这是我的代码:

import gobject
import pprint
gobject.threads_init()

from dbus import glib
glib.init_threads()

import dbus
bus = dbus.SessionBus()

remote_object = bus.get_object("org.freedesktop.UDisks", # Connection name
                               "/org/freedesktop/UDisks" # Object's path
                              )

print ("Introspection data:\n")
print remote_object.Introspect()
print remote_object.get_dbus_method("ListNames",dbus_interface="org.freedesktop.DBus")
for item in remote_object.ListNames():
        print item

我得到的错误是:

dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UDisks was not provided by any .service files

来自udisk-demon manpage

udisks-daemon 在系统消息总线上提供 org.freedesktop.UDisks 服务。 用户或管理员永远不需要启动这个守护进程,因为只要应用程序调用 org.freedesktop.UDisks 服务,它就会由 dbus-daemon(1) 自动启动。参见 udisks(7) 手册有关如何自定义 udisks-daemon 工作方式的信息页面。

编辑:所以是SystemSession() 而不是SessionBus()

【问题讨论】:

    标签: python dbus


    【解决方案1】:

    您可以尝试使用DFeet 来检查这个 dbus 对象是否真的存在。

    【讨论】:

      【解决方案2】:

      以下对我有用,但我没有看到您使用的 ListNames 方法,所以我使用了 EnumerateDevices。

      导入dbus 总线 = dbus.SystemBus() udisks = bus.get_object("org.freedesktop.UDisks", "/org/freedesktop/UDisks") udisks = dbus.Interface(udisks, 'org.freedesktop.UDisks') 设备 = udisks.get_dbus_method('EnumerateDevices')()

      【讨论】:

        猜你喜欢
        • 2012-04-26
        • 2018-01-11
        • 2016-04-03
        • 1970-01-01
        • 2016-04-17
        • 1970-01-01
        • 2018-08-14
        • 2016-06-23
        • 1970-01-01
        相关资源
        最近更新 更多