第三方插件¶
描述¶
第三方插件不是应用程序子目录,而是使用诸如 pip install
或 easy_install
等安装到本地的模块。
第三方插件解放使用,Web应用程序不需要将插件代码放入子目录,只需要使 pip install 或 easy_install 等安装到本地机器上,然后在初始化 PluginManager
时,传入 plugin_packages
参数。
这意味着任何人都可以编写一个包并将其发布到pypi。用户编写 requirements.txt
并安装依赖项,这些依赖项在初始化中被调用,而几乎不用担心后续第三方插件升级。
本地插件¶
它是Web应用程序下的一个包,是Web的一部分,对于本地插件来说,插件开发人员就是用户本人,要了解更多参考 插件结构
如何开发插件?¶
本地插件只需要第一步,第三方插件需要编写 setup.py
,需要后面几步。
首先创建一个包,应该在包的
__init__.py
中编写元数据和register函数返回扩展点,其他核心代码也可以写在这个文件中,当然,推荐做法是独立模块。第一步实际上是编写本地插件的过程。这一步,你需要编写 setup.py ,以便本地插件可以(发布到pypi,可选)让其他人通过pip使用:
from setuptools import setup
setup(
name='flask_pluginkit_demo',
packages=['flask_pluginkit_demo',],
include_package_data=True,
..
)
如果你的插件包含模板文件或静态文件,还需要编写
MANIFEST.in
清单文件。
recursive-include flask_pluginkit_demo/templates *
recursive-include flask_pluginkit_demo/static *
测试,发布
以下命令所需的模块可以这样安装:
$ 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/*