如何使用Pip安装包且不破坏现有旧版本依赖环境?
解决方法
以下几种方式可以让pip安装与当前锁定环境兼容的包版本:
1. 用约束文件强制pip遵守现有版本规则
安装stripy时指定你的requirements.txt作为约束文件,pip会自动寻找能兼容已锁定包(如scipy==a.b.c)的stripy版本,且不会尝试升级已锁定的依赖:
pip install stripy --constraint requirements.txt
这个命令会限制pip不得突破requirements.txt里的版本锁定,只能选择和现有环境兼容的stripy版本。
2. 手动指定兼容的stripy版本
如果自动匹配失败,可以手动筛选合适的版本:
- 先列出stripy所有可用的历史版本:
pip install stripy== - 查阅各版本的依赖说明,挑选出依赖的
libgcc版本与scipy==a.b.c兼容的版本,再安装:
把pip install stripy==x.y.zx.y.z替换为找到的具体兼容版本号。
3. 用pip-tools自动生成兼容依赖清单
如果需要长期维护多包兼容性,可使用pip-tools工具自动生成符合所有约束的依赖文件:
- 安装pip-tools:
pip install pip-tools - 创建
requirements.in文件,写入基础锁定依赖和需要的新包:scipy==a.b.c stripy - 编译生成兼容的
requirements.txt:
生成的文件会自动填入与pip-compile requirements.inscipy==a.b.c兼容的stripy版本号,之后直接用该文件安装即可:pip install -r requirements.txt
4. 配合--no-upgrade选项强化版本锁定
如果安装时pip仍试图升级已锁定的包,可添加--no-upgrade选项强制保留现有包版本:
pip install stripy --no-upgrade --constraint requirements.txt
内容的提问来源于stack exchange,提问作者Andrei Miculiță
相关产品推荐
相关产品推荐

