You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用setuptools_scm时,如何让pip仅安装最新标记版本?

解决setuptools_scm默认安装Git仓库最新标签版本的问题

方案1:修改setuptools_scm配置,强制返回最新标签版本

在项目配置中调整setuptools_scm的行为,让它忽略未标记提交,始终返回仓库里最新的标签版本。

如果用pyproject.toml,添加以下配置:

[tool.setuptools_scm]
fallback_version = "0.0.0"
local_scheme = "no-local-version"
# 禁用自动推测下一个开发版本
guess_next_version = false
# 自定义规则:仅返回最近的标签版本
version_scheme = """
    lambda version: version.tag if version.tag else version.fallback_version
"""

如果用setup.py,修改use_scm_version参数:

from setuptools import setup

def latest_tag_version(version):
    return version.tag if version.tag else version.fallback_version

setup(
    use_scm_version={
        "fallback_version": "0.0.0",
        "local_scheme": "no-local-version",
        "guess_next_version": False,
        "version_scheme": latest_tag_version,
    },
    # 其他项目配置...
)

配置完成后,不管当前仓库HEAD是不是标记提交,setuptools_scm都会返回最近的标签版本。这样执行pip install git+<仓库URL>时会安装对应标签版本,而非自动生成的开发版;同时pip list --outdated和pip install --upgrade只会在有新标签时提示更新,不会因为未标记提交触发。

方案2:通过命令自动获取最新标签再安装

如果不想修改项目配置,可以用命令行先获取仓库的最新标签,再基于标签安装:

Windows PowerShell命令:

$latest_tag = git ls-remote --tags --sort="v:refname" <你的仓库URL> | Select-Object -Last 1 | ForEach-Object { $_.Split('/')[-1] }
python -m pip install git+<你的仓库URL>@$latest_tag

Linux/macOS Bash命令:

latest_tag=$(git ls-remote --tags --sort="v:refname" <你的仓库URL> | tail -n1 | cut -d'/' -f3)
pip install git+<你的仓库URL>@$latest_tag

这个方法会自动拉取仓库所有标签并排序,取最新的一个作为安装目标,无需手动输入标签名。

内容的提问来源于stack exchange,提问作者mira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:10:16