第三方插件

描述

第三方插件不是应用程序子目录,而是使用诸如 pip installeasy_install 等安装到本地的模块。

第三方插件解放使用,Web应用程序不需要将插件代码放入子目录,只需要使 pip installeasy_install 等安装到本地机器上,然后在初始化 PluginManager 时,传入 plugin_packages 参数。

这意味着任何人都可以编写一个包并将其发布到pypi。用户编写 requirements.txt 并安装依赖项,这些依赖项在初始化中被调用,而几乎不用担心后续第三方插件升级。

本地插件

它是Web应用程序下的一个包,是Web的一部分,对于本地插件来说,插件开发人员就是用户本人,要了解更多参考 插件结构

如何开发插件?

本地插件只需要第一步,第三方插件需要编写 setup.py ,需要后面几步。

  1. 首先创建一个包,应该在包的 __init__.py 中编写元数据和register函数返回扩展点,其他核心代码也可以写在这个文件中,当然,推荐做法是独立模块。

  2. 第一步实际上是编写本地插件的过程。这一步,你需要编写 setup.py ,以便本地插件可以(发布到pypi,可选)让其他人通过pip使用:

from setuptools import setup
setup(
    name='flask_pluginkit_demo',
    packages=['flask_pluginkit_demo',],
    include_package_data=True,
    ..
)
  1. 如果你的插件包含模板文件或静态文件,还需要编写 MANIFEST.in 清单文件。

recursive-include flask_pluginkit_demo/templates *
recursive-include flask_pluginkit_demo/static *
  1. 测试,发布

以下命令所需的模块可以这样安装:

$ pip install -U pip twine wheel setuptools

4.1 使用 pip install . 安装到本地虚拟环境或全局,并测试插件功能。

4.2 如果插件功能符合预期,可以使用命令打包: python setup.py sdist bdist_wheel ,更多参数自行调整。

4.3 在发布到pypi.org前,你可以发布到test.pypi.org,这是官方的pypi测试网站,里面的包不会轻易使用,命令是: twine upload --repository-url https://test.pypi.org/legacy/ dist/*

4.4 你可以在这个测试站查看描述等有没有问题,无误后发布到正式站pypi.org,命令是: twine upload dist/*

  1. 第三方插件示例