一组命令行工具(pip-compile 与 pip-sync),用于将 Python 依赖锁定为可复现的 requirements 文件,并让虚拟环境与之保持同步。
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
使用 uv 安装所有包及依赖组
uv sync --all-packages --all-groups - 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 数据每日更新。
相关项目
8003686PythonBSD-3-Clause维护活跃更新于 昨天
现代可扩展的 Python 项目管理工具,涵盖构建、环境、测试、版本与发布。
7248487PythonMIT维护活跃更新于 10天前
通用命令行工具,自动完成版本号升级、Git 打标签、生成变更日志、发布 GitHub/GitLab Release 和 npm 包。
9083578JavaScriptMIT更新于 8天前
一个 Python 项目脚手架工具,可快速生成可发布到 PyPI 的规范化包结构,并预置 tox、pytest、Sphinx 等工具。
2260187PythonOther更新于 5天前
将 Jupyter 笔记本保存为 Markdown 或 Python、Julia、R 脚本,便于版本管理与 IDE 编辑。
7280+3 本周437PythonMIT维护活跃更新于 3天前
收录各类编程语言、框架、编辑器和操作系统的 .gitignore 模板,供快速创建忽略规则。
17.6万+69 本周8.2万CC0-1.0维护活跃更新于 3天前