Repolode
pypa

pypa/setuptools-scm

从 Git 或 Mercurial 标签自动生成 Python 包版本号,并与 setuptools 集成。

Star
954
Fork
251
未关闭 Issue
26
最近提交
18小时前

这是什么?

setuptools-scm 根据项目的版本控制元数据(通常是 Git 或 Mercurial 标签)计算 Python 包的版本号。构建时会依据最近的标签和提交状态生成版本,无需在 setup 文件中手动维护版本字符串,发布版本与开发构建都能与仓库历史保持一致。

该包与 setuptools 集成。仓库是一个 monorepo,包含两个项目:setuptools-scm 本身,以及可脱离 setuptools 独立使用的核心 VCS 版本库 vcs-versioning。

仓库使用 uv 管理依赖,提供安装全部包与依赖组、分别运行两个项目的 pytest 测试以及构建共享 mkdocs 文档的命令。

核心功能

  • 01在构建时根据 Git 或 Mercurial 标签推导版本号。
  • 02与 setuptools 集成,用于 Python 包构建。
  • 03提供可脱离 setuptools 独立使用的 vcs-versioning 库。
  • 04附带基于 pytest 的测试套件和基于 mkdocs 的文档。

适用场景

  • 让 Python 包版本与 Git 标签保持一致,无需手动修改版本字符串。
  • 为使用 Git 或 Mercurial 管理的 Python 项目设置版本号。
  • 在不使用 setuptools 的工具链中复用基于版本控制的版本检测。

快速上手

  1. 1

    使用 uv 安装所有包及依赖组

    uv sync --all-packages --all-groups
  2. 2

    运行测试套件

    uv run pytest -n12

标签

常见问题

setuptools-scm 是什么?
从 Git 或 Mercurial 标签自动生成 Python 包版本号,并与 setuptools 集成。 setuptools-scm 根据项目的版本控制元数据(通常是 Git 或 Mercurial 标签)计算 Python 包的版本号。构建时会依据最近的标签和提交状态生成版本,无需在 setup 文件中手动维护版本字符串,发布版本与开发构建都能与仓库历史保持一致。
setuptools-scm 可以免费使用吗?用的什么许可证?
setuptools-scm 没有声明许可证。代码虽然公开,但没有许可证就没有明确的使用授权,正式使用前建议先联系作者。
setuptools-scm 还在维护吗?
活跃维护中。setuptools-scm 最近一次提交是在 2026年11月6日。
setuptools-scm 适合用来做什么?
让 Python 包版本与 Git 标签保持一致,无需手动修改版本字符串。 为使用 Git 或 Mercurial 管理的 Python 项目设置版本号。 在不使用 setuptools 的工具链中复用基于版本控制的版本检测。
setuptools-scm 怎么安装和运行?
使用 uv 安装所有包及依赖组: uv sync --all-packages --all-groups 运行测试套件: uv run pytest -n12
在哪里获取 setuptools-scm?
源代码和安装说明在 GitHub 上:https://github.com/pypa/setuptools-scm

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目