如何使用pip安装依赖时强制安装符合版本要求的最低版本
pip强制安装依赖最低版本实现方案
Python 3.4.3 兼容的最高pip版本为19.1.1,不存在单条内置命令可以直接全局将dependency>=version声明转换为dependency==version规则处理,但可以通过pip原生支持的约束文件机制实现完全相同的安装效果,操作流程如下:
- 生成最低版本约束文件
针对本地带setup.py的源码项目,先执行pip install --no-deps .安装项目本身(不安装依赖),再运行以下代码自动提取所有依赖的最低版本,生成约束文件:
针对import pkg_resources # 将下面的your_project_name替换为实际项目的包名 dist = pkg_resources.get_distribution("your_project_name") constraints = [] for req in dist.requires(): req_str = str(req) if ">=" in req_str: pkg = req_str.split(">=")[0].strip() min_ver = req_str.split(">=")[1].split(",")[0].strip() constraints.append(f"{pkg}=={min_ver}") else: constraints.append(req_str) with open("constraints.txt", "w") as f: f.write("\n".join(constraints))requirements.txt格式的依赖清单,直接做文本替换生成约束文件即可:# Linux/macOS 环境 sed 's/>=/==/g' requirements.txt > constraints.txt # Windows PowerShell 环境 (Get-Content requirements.txt) -replace '>=', '==' | Set-Content constraints.txt对于带版本上限的声明如
requests>=2.18.0,<3.0.0,替换后为requests==2.18.0,<3.0.0,属于pip可正常识别的合法版本规则,会强制安装2.18.0版本,不会触发更高版本的拉取。 - 基于约束文件执行安装
安装时通过-c参数传入约束文件,该配置会全局生效,所有顶层依赖、嵌套子依赖都会遵循约束中的版本要求,不会默认安装符合>=规则的最新版本:# 本地源码项目安装 pip install -c constraints.txt . # 基于requirements清单安装 pip install -c constraints.txt -r requirements.txt
说明
- 约束文件优先级高于依赖包内置的版本声明,只要包名匹配就会强制使用约束指定的版本,执行安装前可直接打开
constraints.txt核对版本,避免出现版本冲突。 - 部分项目的依赖下限声明可能未经过完整测试,强制安装最低版本后可能存在API兼容问题,安装完成后需要自行验证功能可用性。
- Python 3.4.3已停止官方维护,不要尝试升级pip到20.0及以上版本,会出现Python版本不兼容报错,上述方法完全适配19.1.1及以下版本的pip。
内容的提问来源于stack exchange,提问作者hackedXD
相关产品推荐
相关产品推荐

