用于管理应用程序中的插件/扩展的库。

pluginloader的Python项目详细描述


VERSIONDOWNLOADSTESTSCOVERAGE
Latest PyPI versionNumber of PyPI downloadsTravis resultsCoveralls results_

目标和理念

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和应该加载方法的上下文。

链接将始终被忽略。

许可证

版权所有(c)2014 Miguel_ngel García(@magmax9)。

根据the MIT license授权。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java字符串。替换(regex,string)以替换XML中的内容   java Spring SOAP Web服务请求日志中XML请求有效负载的元素   java在一个类中保存作业对象并在另一个类中使用(初学者)   java无法定位com。西蒙图夫斯。奥内贾尔。在web启动中启动   java可以将Spring DAO合并到服务层吗?   使用互相关的声音文件的java时间延迟   java理解C中声明的数组指针算法   regex如何在Java中找到第一个未替换的引号?   当存在插入Spring数据JPA时进行java数据库轮询   java Axis客户端调用引发classcast异常   JavaFX ControlFX对话框中的java动作按钮css样式   使用iText Java获取空页计数   返回随机文本字段输入的java   java从spring boot stomp连接到外部activemq   java控制台错误无法找到或加载主类   java NoClassDefFoundError在尝试使用JarSigner对apk文件进行签名时出错。exe   GuavaJava:对象列表到字符串列表的可能转换   java PropertyPlaceHolderConfiguration和ResourceBundleMessageSource   java无法在回调中赋值   用于旋转变换的java简洁类(减少冗余)