首页
学习
活动
专区
圈层
工具
发布

浅谈 Python 库的插件系统设计

上周末我给PDM实现了一个插件系统,于是就顺便利用这篇文章总结一下 Python 库里面用到的插件系统的设计方法。...可选配的插件 可选配的插件一般用在 Python 库中1,特点是可配置,可调整插件参数,但需要写额外的代码或配置来装载它。...Requests 作为 Python 中最著名的库没有之一,Requests 的层级划分和模块解耦做得非常好。这样开发者想在上面做二次开发非常容易,有种随心所欲的感觉。...在介绍 Marko 的插件系统前,我们先看看Python-Markdown的扩展方法 Python-Markdown 的扩展方法 我猜没有人给这货写过扩展吧,它的官方文档,几乎什么也没写,要研究怎么写扩展...库(Library)是针对 Python 应用(Application)而言的,前者主要用来 import,发布到 PyPI 上,后者主要是用来 run,一般不发布到 PyPI 上。

60040

浅谈 Python 库的插件系统设计

上一篇文章介绍了可选配型插件的实现的例子,这篇文章继续说说安装即生效的插件原理。 安装即生效的插件 如果使用方只用把插件加到依赖里,安装以后这个插件就自动生效了,那使用方岂不是非常方便?...但 Python 是个运行时的动态语言,所有代码需要生效都要实际执行它,那么这个执行时谁来做,什么时机执行呢?...那么关键就是如何寻找当前所有安装的插件了,Python 包提供了这样的机制,叫做entry point。...简单来说,就是 Python 的库打包时,像包信息中注册写入一个配置,把某个 Python 对象注册为特定类型(类型需要与宿主约定好)的载入点,宿主则可以通过pkg_resources.iter_entry_points...利用 Python 的启动机制执行 但如果这个宿主没有为插件预留入口,或者它没有设计成可扩展的,那我们也有办法硬插进去。

71130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mybatis插件原理_idea插件库

    Mybatis插件 插件简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。...以MyBatis为例,我们可基于MyBatis插件机制实现分页、分表,监控等功能。由于插件和业务 无关,业务也无法感知插件的存在。...插件机制,我们可以使用插件为目标对象创建一个代理对象;AOP (面向切面)我们的插件可以为四大对象创建出代理对象,代理对象就可以拦截到四大对象的每一个执行; 拦截 插件具体是如何拦截并附加额外的功能的呢...这样,插件逻辑即可在 Executor相关方法被调用前执行。 自定义插件 插件接口 Mybatis 插件接口-Interceptor 8....Intercept方法,插件的核心方法 9. plugin方法,生成target的代理对象 10. setProperties方法,传递插件所需参数 自定义插件 设计实现一个自定义插件 @Intercepts

    1.6K10

    如何发布插件到WordPress官方插件库

    之前开过WordPress插件开发教程的坑,写了两篇文章之后就没空写了,最近搞了一个评论内容审核过滤的插件,提交到了WordPress官方插件库 在提交官方插件库之前呢,我们需要有一个功能完善的插件,在提交之后呢...然后会通过邮件跟你反馈代码当中存在问题的地方 比如使用了curl,而不是WordPress自带的HTTP API等等,在发布之前,你需要有足够的耐心去接受审核,以及修改相应的问题代码 审核通过之后,他们就会开通对应的svn插件库权限...mkdir -p /home/svn/project 到这里我们的插件应该都审核过了,所以我们只需要把我们的插件文件提交到svn存储库当中就可以了 克隆插件库 cd /home/svn/project...(png|jpg) 并且需要推送到存储库中 svn add assets/* svn ci -m "add assets" 然后再次去看插件主页就会显示出我们对应的banner图片,在WordPress...任何个人或团体,未经允许禁止转载本文:《如何发布插件到WordPress官方插件库》,谢谢合作!

    1.1K40

    python插件 docker buil

    要求:          python插件需要附属在自己的软件包程序中,以os.path.append的方式加载      实现步骤:      1、搜索找到etcd3的pthon插件         .../kragniz/python-etcd3         C) 在homepage中找到关联插件包说明:https://github.com/kragniz/python-etcd3/blob/master...3.0;python_version=='2.7' monotonic>=0.6;python_version=='2.7'   2.3、搜索etcd3关联插件protobuf    A) 下载相关包...grpcio安装前,再执行一次其他插件的安装,这样编译就通过了,怀疑是插件未及时更新,但验证镜像B时所有的相关包都可以正常用python引用,神奇的问题。    ...后记:       本次自动安装python插件(先后顺序,dnspython重复)       six-1.11.0       setuptools-39.1.0       dnspython-1.15.0

    92420

    vscode安装python插件

    笔记内容:vscode安装python插件 笔记日期:2017-12-23 vscode创建python文件 ---- 在介绍如何安装python插件之前,先来看看没有插件的情况下,是否能够在...6.然后在终端中输入:python 你的文件名称,然后回车就可以执行文件中的代码了: ?... 可以在vscode中打开你python文件所存放的目录,这样就方便于管理和编辑你的python文件: ?... vscode安装python插件 ---- 从以上实验可以知道,安不安装插件都可以运行python代码,安装插件只不过是为了完善vscode对python代码的智能提示、语法检测以及断点调试等功能...vscode安装python插件可以在官网上下载插件进行安装,也可以在vscode里的应用商店里进行安装。 点击左侧的应用商店图标,会弹出来插件菜单: ? 安装第一个: ?

    2K10

    VSCode 插件(Python路径复制)

    今天推荐一个插件,复制路径使用 ---- Python的强大很大一部分是它的库相当强大,但是为了解耦,大家把他们分开写。 那有一个问题就是如何互相使用这些互相依赖的库。...Python 路径 此扩展添加了一组工具,可帮助您在 Python 项目中生成内部导入语句。...特征 可以从以下位置访问“复制 Python 路径”: 命令 资源管理器上下文菜单 编辑器上下文菜单 编辑器标题上下文菜单 基本复制 Python 路径 将当前文件的完整模块名称复制到剪贴板。...selected_text_n, ) 灵感来源 来自 Sublime 包的灵感:https://github.com/pokidovea/copy_python_path 参考 https://github.com...Alt+鼠标点击 from gui1 import ( plot, ylabel, canvas, ) 最终结果 https://github.com/mgesbert/vscode-python-path

    2K70

    WordPress数据库清理优化插件

    分享一个WordPress中,可以清理数据库、优化数据库的插件:Easy WP Cleaner。...该插件,可以一键清理不必要的数据库数据,比如: “修订”-“revision” “草稿”-“draft” “自动草稿”-“auto draft” “审阅的评论”-“moderated comments”...WordPress数据库,而无需使用诸如phpMyAdmin之类的任何工具。...安装方法很简单,直接后台,插件,安装插件,搜索Easy WP Cleaner,安装并启用即可: 如果你不知道它具体可以清理哪些内容,可以参考如下关于Easy WP Cleaner插件所清理的数据库名词的解释...总之,这个插件用了没啥坏处。 声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。

    76640

    基于Python的Maya插件开发

    (本示例中用 Everythins 搜索该文件) 重新启动 Maya,可以在输出窗口看到上述的打印日志 (4)配置Python 解释器,添加 Maya 的 devkit 扩展包进去,这个写代码时就能有自动提示了...(5)编码环境测试 在场景中创建10个立方体,按 alt + A 运行代码 至此,开发环境已经全部搭建完成了,剩下就是按自己实际的需求开发工具了 本文参考链接: (1)Python编写...Maya插件,从0到1 (2)PyCharm关联Maya (3)https://help.autodesk.com/view/MAYAUL/2018/CHS/?...提供一个“检查更新”的功能,就是请求一个 url 获取版本号,然后对比看有没有最新的,另外一种方法就是由上而下广播通知大家更新插件; (3)缩写一个 exe 程序,一键安装插件 其实就是双击后,可以将包含在...查询目录有很多种方法,比如遍历注册表,然后选Maya版本,再找到指定的 shelves 目录 祝大家都能顺利完成Maya的插件开发

    1.9K20

    为Eclipse安装Python开发插件

    为Eclipse安装PyDev插件 1. 启动Eclipse a. 启动Eclipse。有一个屏幕会出现,如下所示。在这里,可以选择想要打开的工作空间。...截屏读到的是‘Python 3.1’,这是一个旧的版本,最好安装Python 3.2(作者注:原文是这样,我也没看到哪里有Python 3.1)。 ? c....开始下载插件。 f. 注意:当看到选择所需组件对话框时,必须在按下okay键之前手工的勾选上多选按钮。如果没有这么做,那么看起来好像安装过程在进行,而实际上却没有。...配置PyDev之前必须先安装Python。 b. 转到Windows -- Preferences。在参数窗口,展开Python,选择Interpreter - Python。 ? c....,输入Python32作为解释器的名称。为了调用解释器,浏览到Python安装地址(例如C:\Program Files\Python32\python.exe),然后按下Open。 ?

    2.8K20

    IDEA集成Python插件,SDK配置

    Install JetBrains  plugin...按钮,安装官网插件 Browse Repositories按钮,通过远程服务器来查询我们要安装的插件 Install plugin from disk...按钮,意思是从硬盘安装插件 在这里我没有搭理这三个按钮,直接点击右边下载按钮。...2:重启后新建项目,查看界面是否有python ? 困扰点:   起初安装完毕,python--》Module SDK 是 显示 , 这个对于我刚接触的来说,的确有点阻碍。...网上教程好象都是下载好插件后,直接就有了SDK。我也没整明白 ? 通过一系列查看及网上搜寻,尝试着处理。...3:安装完毕后在cmd命令中 输入“python”,查看是否成功 4:python安装成功后,通过URL路劲手动添加,你会发现,SDK还是没有存在。

    3.7K30
    领券