dbus-python
Python bindings for libdbus
Decision gist · record as of 2026-08-14
Yes, but with conditions. Install if you need to integrate with existing D-Bus services on a Linux system and are comfortable with the high install friction (compiled dependencies) and aging codebase. If you are starting a new project, consider the alternatives listed in the package documentation—particularly dbus-next or jeepney for asyncio support, or dasbus for a higher-level interface. No known security vulnerabilities.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires libdbus development headers and C compiler to build; D-Bus daemon must be running on the system.
- High install friction due to compiled C dependencies on libdbus development headers.
- Package is aging (519 days since last release) with inactive development status, though it remains the original reference binding and receives occasional maintenance.
License · maintenance · safety
Expat (MIT/X11) (permissive) — Licensed under MIT (Expat), a permissive license with no restrictions on commercial or private use, modification, or redistribution.
last release 2025-03-13 (519 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 254,565 downloads/mo, #8,492 on PyPI
Alternatives
Verify before relying
import dbus
bus = dbus.SystemBus()
object_path = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
interface = dbus.Interface(object_path, 'org.freedesktop.DBus')- Whether the package's known limitations with multi-threaded use and main-loop selection affect your specific use case
- Current state of the GitLab repository and whether maintenance is truly inactive or episodic
What it is and what it does
dbus-python is the original Python binding for D-Bus, the reference implementation of the D-Bus protocol used for inter-process communication on Linux systems. It allows Python programs to call methods on, and receive signals from, system services and other applications connected to the D-Bus message bus.
The package wraps libdbus directly and requires careful main-loop integration; it does not follow a strict "refuse to guess" principle and has known limitations with multi-threaded code. The description itself lists several alternative bindings (dasbus, dbussy, dbus-next, dbus-fast, jeepney) that may better suit modern use cases, particularly if you need asyncio support or higher-level abstractions.
Use it for
- Integrate Python applications with systemd services or other system daemons via D-Bus method calls
- Monitor system events (power state, network changes, device hotplug) by subscribing to D-Bus signals
- Build desktop applications that need to interact with GNOME, KDE, or other D-Bus-using desktop environments
- Expose Python services on the D-Bus message bus for other applications to call
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, but with conditions.
Install if you need to integrate with existing D-Bus services on a Linux system and are comfortable with the high install friction (compiled dependencies) and aging codebase. If you are starting a new project, consider the alternatives listed in the package documentation—particularly dbus-next or jeepney for asyncio support, or dasbus for a higher-level interface. No known security vulnerabilities.
Install
dbus-python on PyPI
Before you install
High install friction due to compiled C dependencies on libdbus development headers. Package is aging (519 days since last release) with inactive development status, though it remains the original reference binding and receives occasional maintenance.
Requires libdbus development headers and C compiler to build; D-Bus daemon must be running on the system.
License in practice
Licensed under MIT (Expat), a permissive license with no restrictions on commercial or private use, modification, or redistribution.
Quickstart
import dbus
bus = dbus.SystemBus()
object_path = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
interface = dbus.Interface(object_path, 'org.freedesktop.DBus')
Verify before relying
- Whether the package's known limitations with multi-threaded use and main-loop selection affect your specific use case
- Current state of the GitLab repository and whether maintenance is truly inactive or episodic
Package facts
| License | Expat (MIT/X11) permissive |
| Python support | Supports the current Python release >=3.7 |
| Install friction | High. Source build required |
| Runtime dependencies | None |
| Maintenance | Aging 519 days since the last release |
| First released | |
| Downloads | 254,565 / month, #8,492 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 7 - InactiveLicense :: OSI Approved :: MIT LicenseProgramming Language :: CProgramming Language :: Python :: 3Programming Language :: Python :: Implementation :: CPythonTopic :: Software Development :: Object Brokering |
Evidence: dbus-python-1.4.0.tar.gz
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “d-bus python bindings”
- dbus-pythonProvides Python bindings to libdbus, allowing Python programs to…
- jeepneyJeepney is a pure Python implementation of D-Bus messaging with an…
- dbus-fastdbus-fast is a Python library for D-Bus communication that provides…
Give your agent the search over MCP, or paste the wish link into any chat.
More Object Brokering packages
Py4J enables Python programs to dynamically call Java objects and methods as if they were local, and allows Java programs to call back into Python objects.
However, its dormant status (576 days since last release) means no recent bug fixes or feature updates; confirm it works with your target Python and JVM versions…
Celery is a distributed task queue that lets you run Python functions asynchronously across multiple workers, communicating through message brokers like RabbitMQ or Redis.
Install it if you need background job processing, task scheduling, or distributed work coordination.
Converts arbitrary Python objects to JSON strings and back, extending the standard json module with support for custom classes, numpy arrays, and nested structures through JSONEncoder and JSONDecoder subclasses.
However, maintenance is aging (last release 275 days ago), so verify that its feature set meets your needs before adopting it for new projects.
Autobahn provides WebSocket and WAMP (Web Application Messaging Protocol) implementations for Python, enabling bidirectional real-time messaging and remote procedure calls over WebSocket on Twisted and asyncio.
Install it if you need WebSocket or WAMP for real-time messaging.
RedBeat is a Celery Beat scheduler that persists scheduled tasks and runtime state in Redis instead of the local filesystem, enabling dynamic task management and multi-instance coordination.
Install it if you need dynamic task scheduling or multi-instance Beat coordination; skip it if you're using a single Beat instance with a static task set.
Pyro5 enables remote method calls on Python objects across a network, letting you invoke methods on objects running on other machines as if they were local.
See also dbus-fast · jeepney · sdbus · dbus-next · notify2 · PyGObject · dlinfo · python-xlib · spidev · pyobjc-framework-libxpc