plyer
Platform-independent wrapper for platform-dependent APIs
What it is and what it does
Plyer is a Python wrapper that abstracts platform-specific APIs into a single, cross-platform interface. Instead of writing separate code for Android, iOS, Windows, macOS, and Linux, you call Plyer's unified API and it delegates to the appropriate backend—pyjnius on Android, pyobjus on iOS, and native system libraries on desktop platforms. It covers a broad range of device capabilities: motion sensors (accelerometer, gyroscope, compass), environmental sensors (barometer, temperature, humidity), hardware controls (vibrator, brightness, flash), communication (SMS, email, calls), location (GPS), storage, notifications, file choosers, and more.
The package has no runtime dependencies and installs easily, but it is no longer actively maintained. The last release was in November 2022, and the project shows signs of abandonment with many unresolved issues and pull requests. Platform-specific implementations may be outdated or incompatible with current OS versions, particularly on Android (API 30+), iOS, and macOS where APIs have evolved. If you need to access device features in a cross-platform Python application, Plyer can still work for basic use cases, but you should expect to encounter platform-specific bugs and may need to fork or patch the code for modern OS support.
Use it for:
- Build a cross-platform mobile app using Kivy that reads accelerometer and GPS data without platform-specific code branches.
- Send notifications and access file choosers from a desktop Python application on Windows, macOS, and Linux with a single API.
- Access device sensors (battery, brightness, orientation) in a Python-for-Android or Kivy-iOS application.
- Implement text-to-speech or speech-to-text features across multiple platforms with a unified interface.
- Retrieve device metadata (unique ID, device name, CPU count) in a platform-agnostic way.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Plyer provides a platform-independent Python API to access device features like sensors, notifications, file choosers, and hardware capabilities across Android, iOS, Windows, macOS, and Linux.
No. Plyer is abandoned (last release 1371 days ago) with unresolved issues on modern OS versions. While it has no install friction and a permissive license, the lack of maintenance means platform-specific backends are likely broken or incompatible with current Android, iOS, Windows, and macOS APIs. Use only if you are maintaining legacy code or willing to fork and patch it yourself; for new projects, prefer actively maintained alternatives.
Install
plyer on PyPI
pip
pip install plyeruv
uv add plyerpoetry
poetry add plyerInstalling plyer
Before you install
Installation is straightforward with no runtime dependencies, but the project is abandoned as of 1371 days since its last release (2022-11-12). Active maintenance has stalled; many open issues and pull requests remain unresolved, and platform-specific implementations may be outdated or broken on current OS versions.
License in practice
MIT license permits commercial and private use with minimal restrictions, requiring only attribution and inclusion of the license text.
Quickstart
pip install plyer
from plyer import accelerometer
accel = accelerometer.acceleration
Platform-specific backends (pyjnius for Android, pyobjus for iOS, system libraries for desktop) must be available; not all APIs are supported on all platforms—check the supported APIs table in the documentation.
Verify before relying
- Current compatibility with Python 3.10+ and 3.11+ on modern OS versions (last tested in 2022)
- Whether platform-specific backends (pyjnius, pyobjus) remain functional with current versions
- Status of known issues documented in the changelog (e.g., Android 10+ vibrator permissions, macOS deprecated APIs)
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | abandoned — 1,371 days since the last release |
| First released | |
| Downloads | 287,715/month — #8,029 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: plyer-2.1.0-py2.py3-none-any.whl
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
buildozerBuildozer turns Python applications into binary…
permissive · top 15,000 on PyPI
KivyKivy is a Python framework for building…
permissive · top 15,000 on PyPI
desktop-notifierSends cross-platform desktop notifications from…
permissive · top 15,000 on PyPI
pyapns-clientSends Apple Push Notifications to iOS, macOS,…
permissive · top 5,000 on PyPI
apns2-upSends push notifications to iOS devices through…
permissive · top 15,000 on PyPI
robotframework-appiumlibraryAppiumLibrary is a Robot Framework library that…
permissive · top 15,000 on PyPI
notify_pySends cross-platform desktop notifications from…
permissive · top 15,000 on PyPI
aioapnsaioapns sends push notifications to iOS devices…
permissive · top 5,000 on PyPI
pyobjc-framework-CoreMotionProvides Python bindings to macOS's CoreMotion…
permissive · top 15,000 on PyPI
winrt-runtimeProvides Python bindings to access Windows…
permissive · top 15,000 on PyPI