如何选择和使用 python3 dbus 库来替换 dbus-send 调用
How to choose and use a python3 dbus library to replace a dbus-send call
使用 ubuntu 20.10
我想写一个python脚本来处理这个shell命令的输出:
dbus-send --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.GetInhibitors
我对 dbus 编码一无所知。首先开始的地方是我希望有一个好的 python 库。
我了解到这个明显规范的库:“dbus-python 是遗留的 API,使用已弃用的 dbus-glib 库构建,并且涉及大量类型猜测(尽管“明确胜于含蓄”和“抵制猜测的诱惑”)(来自https://wiki.python.org/moin/DbusExamples)
库 https://pypi.org/project/dbus-next/ 承诺纯 python 实现:“零依赖和纯 Python 3。”
上面提到的 wiki 页面上没有提到它,但它看起来是一个健康的项目。
但是,似乎纯 python 方法要求我使用 asyncio 版本。我认为这对我的需求来说太过分了。
我尝试使用 dasbus,但我无法安装必要的库,至少不能在虚拟环境中安装。
尽管安装了系统包 python3-gi,但我收到错误消息“没有名为 gi 的模块”并且尝试安装 PyGObject 失败,因为“没有找到包 'cairo'”...和错误:构建轮失败pycairo.
所以在这一点上,我有一个旧的不推荐的库,一个有依赖性困难的库和一个似乎迫使我使用 asyncio 的库。
我现在明白了为什么我试图在 python 中重写的 php 脚本执行了 shell 命令并处理了丑陋的输出。
除此之外,我想我已经解决了以下几点:
我需要会话总线
“路径”是“/org/gnome/SessionManager”
“接口”是 org.gnome.SessionManager
我想“呼叫”“成员”GetInhibitors
我发现异步有点矫枉过正,因为这是一个 shell 脚本,但如果这是我避免 C 依赖的唯一方法,我会处理它。
我应该使用哪个库?
使用 ubuntu 20.10
我想写一个python脚本来处理这个shell命令的输出:
dbus-send --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.GetInhibitors
我对 dbus 编码一无所知。首先开始的地方是我希望有一个好的 python 库。
我了解到这个明显规范的库:“dbus-python 是遗留的 API,使用已弃用的 dbus-glib 库构建,并且涉及大量类型猜测(尽管“明确胜于含蓄”和“抵制猜测的诱惑”)(来自https://wiki.python.org/moin/DbusExamples)
库 https://pypi.org/project/dbus-next/ 承诺纯 python 实现:“零依赖和纯 Python 3。” 上面提到的 wiki 页面上没有提到它,但它看起来是一个健康的项目。 但是,似乎纯 python 方法要求我使用 asyncio 版本。我认为这对我的需求来说太过分了。
我尝试使用 dasbus,但我无法安装必要的库,至少不能在虚拟环境中安装。 尽管安装了系统包 python3-gi,但我收到错误消息“没有名为 gi 的模块”并且尝试安装 PyGObject 失败,因为“没有找到包 'cairo'”...和错误:构建轮失败pycairo.
所以在这一点上,我有一个旧的不推荐的库,一个有依赖性困难的库和一个似乎迫使我使用 asyncio 的库。
我现在明白了为什么我试图在 python 中重写的 php 脚本执行了 shell 命令并处理了丑陋的输出。
除此之外,我想我已经解决了以下几点:
我需要会话总线
“路径”是“/org/gnome/SessionManager” “接口”是 org.gnome.SessionManager 我想“呼叫”“成员”GetInhibitors
我发现异步有点矫枉过正,因为这是一个 shell 脚本,但如果这是我避免 C 依赖的唯一方法,我会处理它。
我应该使用哪个库?