单一来源项目版本¶
- 页面状态:
完整
- 上次审核时间:
2024-10-07
许多 Python 分发包 发布单个 Python 导入包,在其中希望导入包上的运行时 __version__
属性报告与 importlib.metadata.version()
为分发包报告的相同版本说明符(如 在运行时访问版本信息 中所述)。
通常也希望此版本信息来自版本控制系统 标签(例如 v1.2.3
),而不是在源代码中手动更新。
一些项目可能会选择简单地接受数据录入重复,并依靠自动化测试来确保不同值不会出现分歧。
或者,项目选择的构建系统可以提供一种方法来定义版本号的单一事实来源。
总的来说,选项是:
如果代码位于版本控制系统 (VCS) 中,例如 Git,则可以从 VCS 中提取版本。
版本可以硬编码到
pyproject.toml
文件中 – 构建系统可以将其复制到可能需要的其他位置。版本字符串可以硬编码到源代码中 – 可以在专用文件(例如
_version.txt
,然后必须作为项目源代码分发包的一部分提供)中,也可以作为特定模块(例如__init__.py
)中的属性。然后,构建系统可以在构建时从运行时位置提取它。
请查阅构建系统的文档,了解其推荐的方法。
当意图是分发包及其关联的导入包共享相同版本时,建议项目包含一个自动化测试用例,以确保 import_name.__version__
和 importlib.metadata.version("dist-name")
报告相同的值(注意:对于许多项目,import_name
和 dist-name
将是相同的名称)。
构建系统版本处理¶
以下是一些构建系统处理版本字符串的文档链接。