用于创建和导入插件的框架
项目描述
概述
Pluginlib使创建项目的插件变得简单。
功能
安装
PIP
$ pip install pluginlib
Fedora 和 EL (RHEL/CentOS/Rocky/Alma)
$ dnf install python3-pluginlib
EL7 (RHEL/CentOS)
$ yum install python2-pluginlib
$ yum install python36-pluginlib
使用方法
步骤 1:定义插件父类
所有插件都是父类的子类。要创建父类,使用 @Parent 装饰器。
@Parent 装饰器可以接受一个插件类型,用于访问父类的子插件。如果没有提供插件类型,则使用类名。
@Parent 装饰器还可以接受一个 group 关键字,这限制了插件只能属于特定的插件组。如果不同项目的插件在单个程序中可以访问,例如使用库和框架,则应该指定 group。有关更多信息,请参阅 插件组 部分。
子插件需要的方法应标记为抽象方法。没有这些方法或参数不匹配的插件将无法加载。有关更多信息,请参阅 抽象方法 部分。
"""
sample.py
"""
import pluginlib
@pluginlib.Parent('parser')
class Parser(object):
@pluginlib.abstractmethod
def parse(self, string):
pass
步骤 2:定义插件类
要创建插件,从父类派生并包含任何必需的方法。
插件可以通过可选的类属性进行自定义
- _alias_
更改插件的名称,默认为类名。
- _version_
设置插件的版本。默认为模块 __version__ 或 None。如果加载了类型和名称相同的多个插件,则使用版本最高的插件。有关更多信息,请参阅 版本 部分。
- _skipload_
指定插件不应加载。当插件是其他插件的父类或插件仅在特定条件下加载时,这很有用。有关更多信息,请参阅 条件加载 部分。
"""
sample_plugins.py
"""
import json
import sample
class JSON(sample.Parser):
_alias_ = 'json'
def parse(self, string):
return json.loads(string)
步骤 3:加载插件
插件在导入其所在的模块时加载。 PluginLoader 将从指定的位置加载模块,并提供对这些模块的访问。
- PluginLoader 可以从几个位置加载插件。
程序的标准库
模块列表
文件系统路径列表
插件还可以通过黑名单和类型过滤器进行筛选。有关更多信息,请参阅 黑名单 和 类型过滤器 部分。
插件通过 PluginLoader.plugins 属性访问,这是一个可以通过点表示法访问的嵌套字典。有关其他访问插件的方法,请参阅 访问插件 部分。
import pluginlib
import sample
loader = pluginlib.PluginLoader(modules=['sample_plugins'])
plugins = loader.plugins
parser = plugins.parser.json()
print(parser.parse('{"json": "test"}'))
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
pluginlib-0.9.2.tar.gz (46.7 kB 查看哈希值)
构建分发
pluginlib-0.9.2-py2.py3-none-any.whl (25.4 kB 查看哈希值)
关闭
pluginlib-0.9.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2ad332b6f0115baa9f9e98765c2f325601ef0ec2c60ec37031c2262c2ac611fd |
|
MD5 | d3bf0e70ce888b5f3e8652f76ab5dbc4 |
|
BLAKE2b-256 | 3a18ffd8119bc2fe08fd1b1e7e203f059425ebfb6784add006be0867c088bfdb |
关闭
pluginlib-0.9.2-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d45d0e3fda6ce5c4bf9eac57c6b94eff5f5ca52424869de5c6b5c89bf323b717 |
|
MD5 | b5b11deef5107f0e7e3d89d6dc022913 |
|
BLAKE2b-256 | 2793192a798f2c89f88eea74eb071ce8ddf367d16b8ac6c32903c853f6942474 |