3. 插件机制实例分析
在 pluggy 的文档中提供了一个完整的名为 “eggsample” 软件 + 插件实例 ,
接下来,我以这个实例进行分析,更加深入得体验 pluggy 插件系统的使用
01
编写软件
以一个名为 的项目编写软件本体,
首先,创建第一个文件来定义 hookimpl,供内部或外部插件实现 hook 使用
接着,创建第二个文件来定义 hookspecs,申明本软件中一共有些什么样的 hook
接下来,实现一个内部插件,供软件本体使用
最后,编写软件本体的代码
在软件本体中,做了几件事情:
创建 pm(22 行)
加载 hook 申明(23 行)
通过 setuptools 加载第三方插件 (24 行)
通过 import 加载内置插件 (25 行)
调用 hook,完成软件功能
从这个例子来看,hook 的调用代码和 非 hook 调用代码混在一起的,
也就是说,软件会将插件(hook 的实现)作为自己的一部分进行使用,而不关心这些插件被定义在哪里
还没有结束,为了使用插件能够像 pytest 那样能够安装、运行,还需要为软件额外创建一个
全部就绪之后,就可以使用 pip 进行安装了
OK,一个 python 软件就开发完毕并且安装成功了!
运行一下看看效果,在命令执行
它会将内部定义的数据 再加上插件返回的数据()合并在一起,打乱顺序后输出
同时,也会将内部定义的数据 () 传递给插件,在插件对数据进行修改后再进行输出
目前软件只使用了内部插件来完成部分功能,
接下来看一看外部插件如何创建,
以及安装外部插件后,软件的执行效果
领取专属 10元无门槛券
私享最新 技术干货