假设我想安装a
需要包b1
和b2
. 反过来,b1
requiresc > 1.0.0
和b2
requires c < 1.0.0
。因此,同一个包不能同时满足b1
和的要求。b2
原则上/其他编程语言,这不是问题。c
可以并排安装两个版本,并确保b1
使用另一个版本而不是b2
.
但是,我不确定 pip 是否可以安装同一软件包的两个版本。我的第一个问题是: pip 可以安装一个包的两个版本吗?
我的主要问题是如何实际处理这个问题。我现在能想象的唯一方法是
- fork
b1
(orb2
) 和一个c
适用于 fork 的版本,然后上传b1_forked
到c_for_b1_forked
PyPI,或者 b1
将(或)的代码b2
直接包含在我的项目中
两者似乎都比必要的更成问题。
我试过的
>>> import natsort; print(natsort.__file___)
'/home/moose/.local/lib/python3.6/site-packages/natsort/__init__.py'
$ cd /home/moose/.local/lib/python3.6/site-packages
$ ls
[... a lot of *.dist-info directories, some .py files, some .so files, ]
[... some directories called like the packages I've installed]
所以我很确定这是 Python 查找已安装包的地方,并且只安装了一个版本(尽管*-dist-info
目录让我有点困惑)。
这篇博文表明,目前对于冲突的传递依赖没有好的解决方案。其他项目(例如诗歌)对此有帮助吗?