用 pygobject 编写 D-Bus 服务?

Posted

技术标签:

【中文标题】用 pygobject 编写 D-Bus 服务?【英文标题】:Writing D-Bus service with pygobject? 【发布时间】:2019-02-17 15:09:04 【问题描述】:

我正在尝试编写 D-Bus 服务。但我对蟒蛇感到困惑 包 pygobjectdbus-python

是否可以单独使用 pygobject 编写 D-Bus 服务(不使用 dbus-python)?我的理解是 pygobject 提供了一切 dbus-python 可以。它是否正确?还是我需要 dbus-python?

我通过 D-Bus 成功调用了其他程序的方法,只需使用 pygobject。但是如何在 D-Bus 中提供自己的接口和方法作为服务呢?据我了解,我必须继承我的接口类 Gio.DBusInterfaceSkeleton[1]。但是如何导出自己的方法?

[1]https://lazka.github.io/pgi-docs/Gio-2.0/classes/DBusInterfaceSkeleton.html

【问题讨论】:

【参考方案1】:

目前无法在 pygobject 中编写 D-Bus 服务,因为稳定版本的 gobject-introspection 似乎无法正确检测所有虚拟方法,尤其是 get_vtable 方法。您会注意到the generated API docs 中缺少do_get_vtable。我尝试构建 gobject-introspection 1.59.4,它能够从 glib 2.58.1 中提取正确的 typelib 信息,所以也许未来还有希望。

【讨论】:

以上是关于用 pygobject 编写 D-Bus 服务?的主要内容,如果未能解决你的问题,请参考以下文章

docker Failed to get D-Bus connection 报错

使用 Golang 启动 D-Bus 服务

PyQt5:如何一次连接到两个 D-Bus 服务?

BlueZ D-Bus C , 应用 BLE

BlueZ D-Bus C,应用程序BLE

配置centos7解决 docker Failed to get D-Bus connection 报错