Important

翻译是一项社区工作 you can join。此页面目前翻译进度为 100.00%。

16.4. 发布您的插件

当您的插件准备就绪,并且您认为它可能对某些用户有帮助时,请毫不犹豫地将其上传至 官方 Python 插件仓库。在该页面上,您还可以找到打包指南,了解如何准备插件以使其与插件安装程序良好兼容。或者,如果您希望搭建自己的插件仓库,可以创建一个简单的 XML 文件,列出插件及其元数据。

请特别注意以下建议:

16.4.1. 元数据与名称

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

  • 如果您的插件功能与现有插件类似,请在“关于(About)”字段中说明其差异,以便用户无需安装和测试即可知道应使用哪一个

  • 避免在插件名称中重复使用“plugin”一词

  • 在元数据中使用 description 字段提供一行简短描述,使用 About 字段提供更详细的说明

  • 包含代码仓库、缺陷追踪器和主页;这将极大提升协作可能性,且可借助现有网络基础设施(如 GitHub、GitLab、Bitbucket 等)轻松实现

  • 谨慎选择标签:避免使用信息量不足的标签(如 vector),优先使用他人已采用的标签(参见插件网站)

  • 添加合适的图标,不要保留默认图标;可参考 QGIS 界面中建议的图标风格

16.4.2. 代码与帮助文档

  • 不要在仓库中包含生成的文件(如 ui_*.py、resources_rc.py、生成的帮助文件等)和无用内容(例如 .gitignore)

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

  • 在合适的情况下(例如执行分析的插件),请考虑将其作为 Processing 框架的子插件:这样用户即可批量运行、集成到更复杂的工作流中,同时您也无需费心设计界面

  • 至少包含最基本的文档,如有助于测试和理解,还应提供示例数据。

16.4.3. 官方 Python 插件仓库

您可以在 https://plugins.qgis.org/ 找到*官方* Python 插件仓库。

要使用官方仓库,您必须从 OSGEO 网站门户 获取一个 OSGEO ID。

上传插件后,将由工作人员审核,您会收到通知。

待办:

插入治理文档的链接

16.4.3.1. 权限

官方插件仓库已实施以下规则:

  • 所有注册用户均可添加新插件

  • staff 用户可批准或拒绝所有插件版本

  • 拥有特殊权限 plugins.can_approve 的用户,其上传的版本将自动获得批准

  • 拥有特殊权限 plugins.can_approve 的用户,只要在插件*所有者*列表中,即可批准他人上传的版本

  • 特定插件仅可由 staff 用户和插件*所有者*删除或编辑

  • 若无 plugins.can_approve 权限的用户上传新版本,该插件版本将自动处于未批准状态。

16.4.3.2. 信任管理

工作人员可通过前端应用程序向选定的插件开发者授予*信任*,即设置 plugins.can_approve 权限。

插件详情页面提供直接链接,用于向插件创建者或插件*所有者*授予信任。

16.4.3.3. 验证规则

插件上传时,其元数据将从压缩包中自动导入并验证。

在向官方仓库上传插件时,请注意以下验证规则:

  1. 包含插件的主文件夹名称只能包含 ASCII 字符(A–Z 和 a–z)、数字以及下划线(_)和连字符(-),且不能以数字开头

  2. 必须包含 metadata.txt

  3. metadata table 中列出的所有必填元数据字段都必须存在

  4. version 元数据字段必须唯一

  5. 必须包含许可证文件,且文件名为 LICENSE``(无扩展名,例如不能是 ``LICENSE.txt

16.4.3.4. 插件结构

根据验证规则,您的插件压缩包(.zip)必须具有特定结构,才能被验证为有效的插件。由于插件将被解压至用户插件文件夹中,因此 .zip 文件内必须包含一个独立的目录,以免与其他插件冲突。必备文件包括:metadata.txt__init__.pyLICENSE。此外,建议包含一个 README 文件,当然也应包含代表插件的图标。以下是一个 plugin.zip 的示例结构。

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