Python 加载插件的方法 pkgutil.walk_packages()的应用

本文介绍了如何使用Python的pkgutil.walk_packages()方法加载插件,通过遍历指定目录下的所有模块,利用统一的start函数接口,将插件动态地集成到主程序中,实现了灵活的功能扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 加载插件的方法 pkgutil.walk_packages()的应用

最近看了wzpan的叮当机器人,然后学习了其中的插件加载方法,很实用,记录一下。

在我们要管理自己的软件时,经常要加入功能,靠写死的代码来实现添加功能,显然是不现实的,所以经常要预留一些接口,然后通过这些接口,来编写插件,从而把我们需要的功能添加到我们的程序里面。而怎么才能把我们的插件加载进我们的程序里面呢?不多说了,直接上代码。

这是一个插件包的结构
在这里插入图片描述
a.py b.py c.py d.py 的内容全部类似,每个文件里面都要有一个标识符,且都有共同叫start 的函数,用于启动插件。
在这里插入图片描述


import pkgutil

_plugins_before_listen = []  #插件列表
nameSet = set() 

for finder,name,ispck in pkgutil.walk_packages(["./packge"]):   #要主要这个文件目录参数是一个列表 
    loader = finder.find_module(name)  #返回一个loader对象或者None。
    mod = loader.load_module(name) #返回一个module对象或者raise an exception
    nameSet.add(mod.SLUG)  #用SLUG来标识每个功能模块
    _plugins_before_listen.append(mod) #把模块加入列表中,方便使用


print(nameSet)  #打印识别出来的标识
print(_plugins_before_listen)  #打印出插件列表
print(_plugins_before_listen[1])  #看一下
_plugins[1].start() #用一下

运行结果
在这里插入图片描述
现在所有的插件都加载到了 _plugins列表中了,要用的时候可以通过SLUG来识别是哪个模块,然后启动它,就ok了,非常使用!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值