Pip 选择要求版本

Posted

技术标签:

【中文标题】Pip 选择要求版本【英文标题】:Pip chosing requirements version 【发布时间】:2020-12-28 19:30:11 【问题描述】:

我在问自己,在这种情况下将安装哪个版本的库 pip

requirements.txt 包含:

numpy<=1.14
scikit-learn

现在想象一下,scikit-learn 依赖于 numpy&gt;=1.10。 如果我现在启动pip install -r requirements.txt,pip 将如何安装依赖项?

    它是否在安装之前解析整个依赖结构并找到有效的numpy版本? 它是否只是按顺序解析文件和依赖项(逐个包)并尝试寻找最佳的“最后一个”依赖项?

在我的例子中,这将是:

    numpy==1.14 numpy==latest

基本问题是:pip 将按什么顺序安装其依赖项?它如何确定正确的版本,尊重所有交叉依赖关系?

编辑:我最初的猜测是,它有一个包含有效版本的内部列表,并通过在安装前解析所有依赖项来取消无效版本。然后取每个包的最高有效剩余版本。

【问题讨论】:

【参考方案1】:

首先要知道:订单很可能很快就会改变。 pip 目前(今天:2020 年 9 月)正在慢慢推出一个新的依赖解析器。它今天已经可以使用,但不是默认设置。因此,根据您使用的依赖解析器,结果可能会有所不同。

几点建议:

pip's documentation chapter "Installation Order" pip's documentation chapter "Changes to the pip dependency resolver in 20.2 (2020)"

【讨论】:

以上是关于Pip 选择要求版本的主要内容,如果未能解决你的问题,请参考以下文章

Pip install 为 Artifactory 上传的包返回“找不到满足要求的版本”

找不到满足要求的版本 tensorflow virtual virtual environment pip pipenv pycharm

pip 更新至20.0.2版本

找不到满足 SoundRecognition 要求的版本

找不到满足要求 awsebcli 的版本

为啥运行“pip install -r requirements.txt”时出现错误“找不到满足要求 scipy==1.5.3 的版本”?