Conda vs pip 解决复杂的依赖树
Conda vs pip solving complex dependency trees
我记得 conda
当我创建具有多达一百个依赖项的相当复杂的环境时,求解器更强大/产生更正确的结果。
这些年来 pip
求解器有改进吗?我手边没有很好的例子,但据我所知,如果有
- 来自包 A 的瞬时依赖性
- 与来自 B
的临时依赖包冲突
(简化示例),pip
做得不好,而 conda
总是生成正确解决的环境。
当 pip
求解器不足时,是否有任何(已记录或未记录)示例?例如。就像上面的例子一样。
ps。随着最近来自 Anaconda, Inc. 的许可变更,我有一个客户正在考虑标准化 pip
并放弃 conda
。
pip 在解决瞬态依赖性方面做得不好。
pip 的依赖解析算法不是一个完整的解析器。
The current resolution logic has the following characteristics:
- Only one top level specification of a requirement (otherwise pip raises a "double requirement" exception) "- first found wins" behavior
for dependency requirements/constraints, which results in not
respecting all constraints. pip 10+ print a warning when this occurs.
讨论过here
pip一直在努力解决这个问题,新的pip 20.3实现了new solver that should address this, but still has its own issues.
我记得 conda
当我创建具有多达一百个依赖项的相当复杂的环境时,求解器更强大/产生更正确的结果。
这些年来 pip
求解器有改进吗?我手边没有很好的例子,但据我所知,如果有
- 来自包 A 的瞬时依赖性
- 与来自 B 的临时依赖包冲突
(简化示例),pip
做得不好,而 conda
总是生成正确解决的环境。
当 pip
求解器不足时,是否有任何(已记录或未记录)示例?例如。就像上面的例子一样。
ps。随着最近来自 Anaconda, Inc. 的许可变更,我有一个客户正在考虑标准化 pip
并放弃 conda
。
pip 在解决瞬态依赖性方面做得不好。
pip 的依赖解析算法不是一个完整的解析器。
The current resolution logic has the following characteristics:
- Only one top level specification of a requirement (otherwise pip raises a "double requirement" exception) "- first found wins" behavior for dependency requirements/constraints, which results in not respecting all constraints. pip 10+ print a warning when this occurs.
讨论过here
pip一直在努力解决这个问题,新的pip 20.3实现了new solver that should address this, but still has its own issues.