如果依赖项中存在无法解决的冲突,则 Pip 安装会陷入无限循环
Posted
技术标签:
【中文标题】如果依赖项中存在无法解决的冲突,则 Pip 安装会陷入无限循环【英文标题】:Pip installation stuck in infinite loop if unresolvable conflicts in dependencies 【发布时间】:2021-03-14 16:16:31 【问题描述】:如果存在无法解决的依赖冲突,Pip 安装会陷入无限循环。要复制,pip==20.3.0
和:
pip install pyarrow==2.0.0 azureml-defaults==1.18.0
【问题讨论】:
你怎么知道这是一个无限循环?你有任何输出吗?请edit问题尽可能具体。 @IMSoP 无限循环意味着您可以使用上面的 repro 或任何其他具有冲突依赖范围的软件包集获得无限循环。 @vizhur 但是什么的无限循环?大概你看到了一些重复的输出,让你看到它是一个“循环”而不是“睡眠”? @vizhur 我的请求只是让 OP 在问题中包含一些输出,因为这对本网站上的每个人都有帮助。重现的步骤很有用,但是在不需要匹配环境的情况下查看输出意味着更多的人可以帮助回答这个问题。它还可以帮助未来的读者了解他们所看到的是否是同一个问题,即使他们运行的命令并不完全相同。pip==20.3.1
也存在这个问题。
【参考方案1】:
解决方法:
本地环境: 将点数下调至
从 yaml 创建的 Conda 环境: 仅当 conda-forge 是最高优先级通道时才会看到这一点,anaconda 通道没有 pip 20.3(截至目前)。为了缓解这个问题,请在 conda 规范文件中明确指定 pip
AzureML 实验: 按照上面的情况,确保固定的 pip 是环境对象中的 conda 依赖项,无论是来自 yml 文件还是以编程方式
【讨论】:
回到旧的 pip 会起作用,但只是出于这个丑陋的原因:旧 pip 的解析器会默默地破坏东西,而新的则无法安装。如果存在无法解决的冲突,最好使用约束并找到一些可行的配置。 source 这就是为什么它说解决方法和缓解措施而不是解决方案。正确的解决方案是解决冲突(尽管有时这几乎是不可能的)以上是关于如果依赖项中存在无法解决的冲突,则 Pip 安装会陷入无限循环的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse 中的项目无法解析 Maven 依赖项中存在的 jars