A Simple Plugin System for Python
Annex provides assistance with developing plugin-based tools.
With Annex you can load and reload plugins from various python modules without the requirement that they exist on the PYTHONPATH.
In your project you would define a base class from which all plugins for project would subclass.
class BaseTestPlugin(object): def run(self, *args, **kwargs): raise NotImplementedError()
from base_plugin import BaseTestPlugin class PrinterPlugin(BaseTestPlugin): def run(self, *args, **kwargs): print args, kwargs
from base_plugin import BaseTestPlugin from annex import Annex plugins = Annex(BaseTestPlugin, ["/path/to/plugins"]) for plugin in plugins: plugin.run("foo", bar="baz")
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.