Third party plugin¶
Description¶
Third-party plugins are non-program subdirectories, local modules from
installations such as pip or easy_install.
The third-party plugin is easy to use, the program can not put the plugin
code into the subdirectory, just use pip install to install to the local
machine, and then pass the
plugin_packages parameter when the
PluginManager is initialized.
This means that anyone can write a package and publish it to pypi, and the user writes requirements.txt and installs the dependent plugin, which is called in the initialization, and almost no need to worry about subsequent third-party plugin upgrades.
Added in version 3.10.0: In this version, you can automatically install third-party packages
in the install_packages parameter.
Format reference:
{"pkgs": ["PyPi-Project", "VCS-URL@branch#egg=package-name", "required"], "index":"pypi or mirror(optional)"}
Tip
The pkgs field is a list of packages, which can be PyPi packages,
VCS URLs, or other package formats supported by pip.
If install with VCS URL, recommend carrying #egg=package-name to check
if it has been installed and avoid duplicate installations.
If you want to install from a specific index, you can specify the
index field, which defaults to empty.
Local Plugin¶
It’s a package under the web application, which is part of the web application, and the plugin developer is the user, more see Plugin Structure.
How to develop plugins?¶
The local plugin only needs the first step, and the third party plugin needs
to write setup.py, which requires the next few steps.
First create a package, the metadata and register functions should be written in
__init__.py, the core code can also be written in this file, of course, the recommended approach is to separate the module.The first step is actually the process of writing local plugins. In this step, you need to write setup.py, so that local plugins can be (published in pypi, optionally) used by others through pip:
from setuptools import setup
setup(
name='flask_pluginkit_demo',
packages=['flask_pluginkit_demo',],
include_package_data=True,
..
)
If your plugin contains template directory or static directory, you need to write an additional manifest file
MANIFEST.in:
recursive-include flask_pluginkit_demo/templates *
recursive-include flask_pluginkit_demo/static *
Testing, Release
The modules required by the following commands can be installed like this:
$ pip install -U pip twine wheel setuptools
4.1 Use pip install . to install to the local environment and
test the plugin functionality.
4.2 If the plugin is as expected, it can be packaged and the command is:
python setup.py sdist bdist_wheel, more parameters to adjust themselves.
4.3 Before the official release, you can post to test.pypi.org, which is
the official pypi test site. The package inside will not be used easily.
The command is:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
4.4 The test station can look at the interface description and so on
whether it meets the requirements of the heart, and publish it to the
official station without problems, pypi.org, the command is:
twine upload dist/*