{"library":"pyudev","title":"pyudev: libudev Binding","description":"pyudev is an LGPL-licensed, pure Python binding for libudev, the device and hardware management library for Linux. It provides functionality to enumerate devices, query their properties and attributes, and monitor device events, including asynchronous monitoring with various GUI toolkit integrations. The current version is 0.24.4 and it supports CPython 3.9 and newer. It is actively maintained with development on GitHub.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install pyudev"],"cli":null},"imports":["from pyudev import Context","from pyudev import Device","from pyudev import Monitor","from pyudev import MonitorObserver","from pyudev import Devices"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pyudev\n\n# Create a udev context\ncontext = pyudev.Context()\n\n# Enumerate all block devices that are partitions and print their labels\nprint('Listing partitions:')\nfor device in context.list_devices(subsystem='block', DEVTYPE='partition'):\n    # Use device.get() for properties, providing a default for safety\n    label = device.get('ID_FS_LABEL', 'unlabeled partition')\n    print(f\"  {device.device_node}: {label}\")\n\n# Monitor for new USB devices (example)\nprint('\\nMonitoring for new USB devices (Ctrl+C to stop):')\nmonitor = pyudev.Monitor.from_netlink(context)\nmonitor.filter_by(subsystem='usb')\nmonitor.start() # Start the monitor to receive events\n\nfor action, device in monitor:\n    if action == 'add':\n        print(f\"  Added USB device: {device.sys_name} ({device.get('ID_VENDOR_FROM_DATABASE', 'Unknown Vendor')})\")","lang":"python","description":"This quickstart initializes a udev context, then demonstrates enumerating all block device partitions and printing their file system labels. It also shows how to set up a monitor to listen for new USB device 'add' events in real-time.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"0.24.4","pypi_latest":"0.24.4","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.5,"avg_import_s":0.05,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.9,"disk_size":"18.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.04,"mem_mb":2,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":2.3,"disk_size":"20.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.06,"mem_mb":2.3,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":2,"disk_size":"12.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.06,"mem_mb":2,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":2.3,"disk_size":"11.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.07,"mem_mb":2.1,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.9,"disk_size":"17.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyudev","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.05,"mem_mb":1.9,"disk_size":"18M"}]}}