点子选择要求版本
Pip chosing requirements version
我在问自己,在这种情况下将安装哪个版本的库 pip:
requirements.txt
包含:
numpy<=1.14
scikit-learn
现在想象一下,scikit-learn
取决于 numpy>=1.10
。
如果我现在开始 pip install -r requirements.txt
,pip 将如何安装依赖项?
- 它是否在安装之前解析整个依赖结构并找到有效的numpy版本?
- 它是否只是按顺序(逐个包)解析文件和依赖项并尝试寻找最佳的“最后”依赖项?
在我的示例中,这将是:
numpy==1.14
numpy==latest
基本问题是:pip 将按什么顺序安装其依赖项?它如何确定正确的版本,尊重所有交叉依赖?
编辑: 我最初的猜测是,它有一个包含有效版本的内部列表,并通过在安装前解析所有依赖项来取消无效版本。然后它取每个包的最高有效剩余版本。
首先要知道的是:订单很可能很快就会改变。 pip 目前(今天:2020 年 9 月)正在缓慢推出新的 依赖解析器 。它现在已经可以使用,但不是默认设置。因此,根据您使用的依赖项解析器,结果可能会有所不同。
几点建议:
我在问自己,在这种情况下将安装哪个版本的库 pip:
requirements.txt
包含:
numpy<=1.14
scikit-learn
现在想象一下,scikit-learn
取决于 numpy>=1.10
。
如果我现在开始 pip install -r requirements.txt
,pip 将如何安装依赖项?
- 它是否在安装之前解析整个依赖结构并找到有效的numpy版本?
- 它是否只是按顺序(逐个包)解析文件和依赖项并尝试寻找最佳的“最后”依赖项?
在我的示例中,这将是:
numpy==1.14
numpy==latest
基本问题是:pip 将按什么顺序安装其依赖项?它如何确定正确的版本,尊重所有交叉依赖?
编辑: 我最初的猜测是,它有一个包含有效版本的内部列表,并通过在安装前解析所有依赖项来取消无效版本。然后它取每个包的最高有效剩余版本。
首先要知道的是:订单很可能很快就会改变。 pip 目前(今天:2020 年 9 月)正在缓慢推出新的 依赖解析器 。它现在已经可以使用,但不是默认设置。因此,根据您使用的依赖项解析器,结果可能会有所不同。
几点建议: