pip是否支持升级至最新候选版本?行为与参数问询
问题解答
1. 行为确认
这是pip的预期行为。你提到的0.4.1rc1属于PEP 440规范定义的预发布版本(候选发布版),pip默认执行pip install -U时,只会优先筛选稳定正式版本,不会自动将预发布版本纳入升级候选,哪怕它的版本号数值更高。
2. 自动升级到最新候选版本的方法
你可以通过以下方式覆盖默认逻辑:
- 添加
--pre参数,让pip把预发布版本纳入版本选择范围:
执行这条命令后,pip会自动选择仓库中最新的可用版本(包括稳定版和预发布版)。pip install -U mypkg --pre --index-url https://build.xyz.com/repository/pypi-all/simple/ - 也可以直接通过版本范围约束强制指定候选版,比如:
pip install -U mypkg>=0.4.1rc1 --index-url https://build.xyz.com/repository/pypi-all/simple/
3. 进一步控制安装版本的选项
除了上述方法,还有这些方式可以精准控制版本:
- 安装最新开发版:如果你的setuptools_scm生成了带
.dev后缀的开发版本(如0.4.1.dev123),同样使用--pre参数即可让pip自动安装最新开发版;也可以直接用版本范围约束,比如mypkg>=0.4.1.dev0。 - 基于PEP 440的精细版本约束:
mypkg~=0.4rc:匹配0.4系列的所有候选版本mypkg>=0.4.1rc1,<0.5:匹配从0.4.1rc1到0.5正式版之前的所有版本(含后续rc版和正式版)mypkg==*rc*:仅匹配带rc标记的候选版本(注:这是模糊匹配写法,更推荐使用规范的版本约束语法)
内容的提问来源于stack exchange,提问作者David Waterworth
相关产品推荐
相关产品推荐

