[英]Guard installed packages from upgrade when installing new packages with pip
想象一下,我有两个包foo
和bar
,其中foo
是bar
的依赖项。 foo
已经安装,我现在想用pip
安装bar
。 是否可以在不升级foo
情况下做到这一点? 特别是我想安装对安装的foo
版本感到满意的最新版本bar
。
从pip help install
--upgrade-strategy <upgrade_strategy>
Determines how dependency upgrading should be handled
[default: only-if-needed]. "eager" - dependencies are
upgraded regardless of whether the currently installed
version satisfies the requirements of the upgraded
package(s). "only-if-needed" - are upgraded only when
they do not satisfy the requirements of the upgraded
package(s).
据我所知,这仅涵盖“始终更新”和“仅在需要时更新”的情况,但不包括我需要的“从不更新”的情况。
pip install bar
(根本没有升级标志)应该做你想做的。 pip 应该选择当前安装的foo
除非bar
明确表示该版本不兼容。 新的 (2020) 解析器还能够通过自动一个一个地尝试可用版本(称为回溯)并安装它来找到可以与当前安装的foo
版本一起使用的bar
版本。 2020 解析器是 pip 20.2 中的一项可选功能,可通过--use-feature=2020-resolver
,并计划在 20.3(计划于 2020 年 10 月发布)中成为默认功能。
然而,需要注意的是,Python 打包不提供一种在不下载包的情况下发现版本冲突的方法(有时甚至从源代码构建)。 1如果包bar
下载(例如tensorflow
)和/或构建成本高(例如,您在 Alpine Linux 等支持较少的平台上安装numpy
),这将是一个问题。 在这种情况下,唯一的选择是手动指定版本,因为 pip 无法知道可以使用哪个版本的bar
,除非您明确告诉它,而不尝试下载它的各种版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.