plux
A dynamic code loading framework for building pluggable Python distributions
What it is and what it does
Plux wraps Python's entry point mechanism to provide a higher-level plugin architecture. It discovers plugins at build time by scanning your codebase for Plugin classes and PluginSpec instances, automatically generating entry points without manual setup.py declarations. At runtime, a PluginManager loads plugins on demand, tracking their lifecycle through three states: resolved (entry point imported), init (factory invoked), and loaded (plugin's load method called). If a plugin fails at any stage, the manager logs the failure but continues operating.
The framework supports two discovery modes: build-hooks (default, integrated with setuptools) and manual mode (for isolated build environments). Plugins can be defined as classes, factories, or decorated functions. This design is particularly useful for large applications like LocalStack that need modular, dynamically-loaded components without hardcoding plugin lists.
Use it for:
- Building CLI applications where subcommands are provided by separate plugin packages discovered at startup.
- Creating microservice architectures where service implementations are loaded dynamically based on configuration.
- Developing extensible frameworks where third-party developers can contribute plugins without modifying core code.
- Packaging applications with optional feature modules that load only when their dependencies are available.
- Automating entry point generation in complex projects to avoid manual synchronization between code and setup metadata.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Plux is a dynamic plugin loading framework built on Python's entry point mechanism, enabling runtime discovery and lifecycle management of plugins with build-time entry point generation.
Yes. Plux is production-stable, actively maintained, has zero known vulnerabilities, and solves a real problem for applications needing modular plugin architectures. The low install friction, permissive license, and support for modern Python versions (3.10–3.13) make it a safe choice. Install it if you're building an extensible application or framework where plugins should be discovered and loaded dynamically.
Install
plux on PyPI
pip
pip install pluxuv
uv add pluxpoetry
poetry add pluxInstalling plux
Before you install
Low install friction with a pure-Python wheel and no runtime dependencies. Active maintenance with recent releases; last commit 2026-07-06 and production-stable classifier indicate ongoing support.
License in practice
Apache-2.0 permissive license allows commercial and proprietary use with minimal restrictions, making it suitable for closed-source projects.
Quickstart
pip install plux
from plux import Plugin, PluginManager
class MyPlugin(Plugin):
namespace = "my.plugins"
name = "example"
def load(self): pass
manager = PluginManager("my.plugins")
plugins = manager.load_all()
Requires Python 3.10 or later.
Verify before relying
- Whether the build-hooks mode works seamlessly with modern build backends beyond setuptools (e.g., poetry, flit).
- Performance characteristics when managing large numbers of plugins or deeply nested namespaces.
- Compatibility with Python 3.13 in practice (classifier present but no explicit test evidence in fact sheet).
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 136 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 893,389/month — #4,797 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: plux-1.16.0-py3-none-any.whl
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
entrypointsDiscovers and loads entry points from installed…
permissive · top 1,000 on PyPI
stevedoreStevedore manages dynamic plugin loading for…
permissive · top 1,000 on PyPI
pluginlibPluginlib provides a framework for defining,…
copyleft · top 15,000 on PyPI
lmllml provides a lazy plugin management system…
permissive · top 5,000 on PyPI
pyproject-hooksCalls build-backend hooks defined in…
permissive · top 1,000 on PyPI
napari-plugin-engineA plugin discovery and hook-calling system for…
permissive · top 15,000 on PyPI
hatch-polylith-bricksA Hatch build hook that integrates Polylith…
permissive · top 15,000 on PyPI
cliffcliff is a framework for building command-line…
permissive · top 5,000 on PyPI
click-pluginsExtends Click CLI groups to load external…
permissive · top 1,000 on PyPI
hatch_build_scriptsA Hatch build plugin that runs arbitrary shell…
permissive · top 15,000 on PyPI