python - Pip 选择要求版本
问题描述
我在问自己,在这种情况下将安装哪个版本的库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 月)正在慢慢推出新的依赖解析器。它今天已经可以使用,但不是默认设置。因此,根据您使用的依赖解析器,结果可能会有所不同。
几个指针:
推荐阅读
- reactjs - 在 StoryBook 文档中使用 propTypes 的 ArgsTable
- ponylang - 如何分配可能引发错误的方法的返回值?
- vue.js - 页面加载后立即触发 Nuxt.js 无限加载
- chatterbot - 当我运行“pip install chatterbot”时出错
- system-verilog - 将 ignore_bins 添加到已定义的覆盖点
- django - 显示来自父类别的所有产品
- sql - 使用单个插入语句插入 2 个表
- php - 如何读取远程 zip 存档中的单个文件(带 zip 的 URL)
- c# - 为什么反序列化对象时结果不同?
- json - Swift - 解析数据错误 - Swift.DecodingError.dataCorrupted