如何让pip install --upgrade仅安装正式发布版本而非开发后缀版
解决pip upgrade优先安装带+后缀分支版本的问题
问题原因
根据PEP 440版本规范,带有+后缀的local version identifier(比如1.2.3+mybranch)的版本,会被pip视为与对应正式版本(1.2.3)同优先级的可用版本。当仓库中存在版本号数值更高的带后缀版本(比如1.2.4+mybranch)时,pip会优先选择这个版本,而非你期望的正式版1.2.4。
解决方案
临时解决(单次命令)
执行升级时,通过版本约束过滤掉所有带+后缀的分支版本:
pip install --upgrade "你的包名!=*+*"
如果需要限定大版本范围(比如只升级到1.x系列的正式版),可以组合约束:
pip install --upgrade "你的包名~=1.0, !=*+*"
持久化配置(默认行为)
如果希望默认升级时都排除带后缀的分支版本,可以在pip配置文件中添加约束:
- 找到pip的配置文件位置:
- Linux/macOS:
~/.config/pip/pip.conf - Windows:
%APPDATA%\pip\pip.ini
- Linux/macOS:
- 在配置文件中添加以下内容(替换为你的包名):
[global] constraint = /path/to/constraints.txt - 创建
constraints.txt文件,写入:
这种方式会让pip在所有安装/升级操作中自动应用该约束,适合长期需要排除分支版本的场景。你的包名!=*+*
内容的提问来源于stack exchange,提问作者red888
相关产品推荐
相关产品推荐

