用于管理应用程序中的插件/扩展的库。
pluginloader的Python项目详细描述
VERSION | DOWNLOADS | TESTS | COVERAGE |
---|---|---|---|
目标和理念
pluginloader是一个库,它允许以一种简单的方式load plugins。它们可以由接口管理,也可以仅由方法验证程序管理。
功能
- 每个插件都可以多次实例化。
- 可自定义筛选器选择是否应将类加载为插件。
- sandboxed:默认情况下,插件无法访问主程序或其他插件,因为它们是在独立的环境中加载的。
- 可参数化上下文:有时需要将一些类、函数或变量预先加载到插件中。这是可能和容易的。
文档
安装
两个选项:在系统/项目中安装:
pip install pluginloader
使用量
您可以将所有插件加载到一个文件中,只需执行以下操作:
loader=PluginLoader()plugins=loader.load_file('plugins.py')
通过这些简单的行,您将在变量plugins
中拥有一个字典,每个类在plugins.py文件中作为键,一个工厂作为值。
让我们看一个例子。使用plugins.py文件:
classFoo(object):pass
我们可以使用:
loader=PluginLoader()plugins=loader.load_file('plugins.py')instance1=plugins['Foo']()instance2=plugins['Foo']()
简单易行。
api
这是一个带有简单api的简单模块。它只包含一个类PluginLoader
,具有以下公共方法:
load_file(filename, onlyif=None, context=None)
加载文件中的所有插件。
参数:
- filename:要加载的文件名。
- onlyif:将对找到的每个类调用的值或函数。如果这个函数返回
False
,它将跳过插件。 - context:dict和应该加载方法的上下文。它通常会将类、函数或变量名映射到主程序中的类、函数或值,因此可以在插件中使用。
load_directory(path, onlyif=None, recursive=False))
加载目录中的所有插件。
参数:
- path:插件所在的路径。
- onlyif:将对找到的每个类调用的值或函数。如果这个函数返回
False
,它将跳过插件。 - recursive:允许递归读取目录的布尔值。
- context:dict和应该加载方法的上下文。
链接将始终被忽略。