繁体   English   中英

使用 pip 安装新软件包时保护已安装的软件包免于升级

[英]Guard installed packages from upgrade when installing new packages with pip

想象一下,我有两个包foobar ,其中foobar的依赖项。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM