16.4. 发布您的插件

一旦您的插件准备好了,并且您认为该插件可能对某些人有帮助,请毫不犹豫地将其上传到 官方的Python插件存储库 。在该页面上,您还可以找到有关如何准备插件以便与插件安装程序很好地配合工作的打包指南。或者,如果您想要建立自己的插件存储库,可以创建一个简单的XML文件来列出插件及其元数据。

请特别注意以下建议:

16.4.1. 元数据和名称

  • 避免使用与现有插件过于相似的名称

  • 如果您的插件具有与现有插件类似的功能,请在关于字段中解释不同之处,以便用户无需安装和测试即可知道要使用哪个插件

  • 避免在插件本身的名称中重复“plugin”

  • 使用元数据中的描述字段进行单行描述,使用关于字段获取更详细的说明

  • 包括代码库、错误跟踪器和主页;这将极大地增强协作的可能性,并且可以通过可用的Web基础设施之一(GitHub、GitLab、BitBucket等)非常轻松地完成

  • 小心选择标签:避免信息不多的标签(例如,向量),而更喜欢已经被其他人使用的标签(参见插件网站)

  • 添加适当的图标,不要保留默认图标;有关要使用的样式的建议,请参阅QGIS界面

16.4.2. 代码和帮助

  • 不包括生成的文件(ui_*.py、Resources_rc.py、生成的帮助文件…)和存储库中的无用内容(例如.gitignore)

  • 将插件添加到相应的菜单(矢量、栅格、Web、数据库)

  • 在适当的时候(插件执行分析),考虑将插件添加为处理框架的子插件:这将允许用户批量运行它,将其集成到更复杂的工作流中,并将您从设计界面的负担中解放出来

  • 至少包括最少的文档,如果对测试和理解有用,还包括样本数据。

16.4.3. 官方的Python插件存储库

您可以找到 official 上的Python插件存储库 https://plugins.qgis.org/

要使用官方存储库,您必须从以下地址获取OSGEO ID OSGEO web portal

一旦你上传了你的插件,它将得到工作人员的批准,并将通知你。

TODO:

插入指向治理文档的链接

16.4.3.1. 权限

这些规则已经在官方插件库中实现:

  • 每个注册用户都可以添加一个新插件

  • staff 用户可以批准或不批准所有插件版本

  • 具有特殊权限的用户 plugins.can_approve 让他们上传的版本自动获得批准

  • 具有特殊权限的用户 plugins.can_approve 可以批准其他人上传的版本,只要它们在插件列表中 owners

  • 只能通过以下方式删除和编辑特定插件 staff 用户和插件 owners

  • 如果用户没有 plugins.can_approve 权限上传新版本,插件版本自动弃审。

16.4.3.2. 信任管理

工作人员可以授予 trust 到所选插件创建者设置 plugins.can_approve 通过前端应用程序的权限。

插件详细信息视图提供了向插件创建者或插件授予信任的直接链接 owners

16.4.3.3. 验证

上载插件时,插件的元数据会自动从压缩包中导入并验证。

这里有一些验证规则,当你想要将插件上传到官方存储库时,你应该知道:

  1. 包含插件的主文件夹的名称必须仅包含ASCII字符(A-Z和a-z)、数字和字符下划线 (_) 和减号(-),也不能以数字开头

  2. metadata.txt 是必填项

  3. 中列出的所有必需的元数据 metadata table 必须在场

  4. 这个 version 元数据字段必须是唯一的

16.4.3.4. 插件结构

遵循验证规则,插件的压缩(.zip)包必须具有特定的结构,才能作为功能插件进行验证。因为插件将被解压缩到用户插件文件夹中,所以它必须在.zip文件中有自己的目录,才不会干扰其他插件。必填文件包括: metadata.txt__init__.py 。但如果能有一个 README 当然还有一个代表插件的图标 (resources.qrc )。下面是plugin.zip应该是什么样子的示例。

plugin.zip
  pluginfolder/
  |-- i18n
  |   |-- translation_file_de.ts
  |-- img
  |   |-- icon.png
  |   `-- iconsource.svg
  |-- __init__.py
  |-- Makefile
  |-- metadata.txt
  |-- more_code.py
  |-- main_code.py
  |-- README
  |-- resources.qrc
  |-- resources_rc.py
  `-- ui_Qt_user_interface_file.ui