Предположим, я хочу установить пакет a
, для которого требуются пакеты b1
и b2
. В свою очередь, b1
требует c > 1.0.0
, а b2
требует c < 1.0.0
. Таким образом, требования b1
и b2
не могут быть выполнены одновременно с одним и тем же пакетом.
В принципе / в других языках программирования это не проблема. Можно установить две версии c
бок о бок и убедиться, что b1
использует другую версию, отличную от b2
.
Однако я не уверен, что pip может установить две версии одного и того же пакета , Мой первый вопрос: может ли pip установить две версии одного пакета?
Мой главный вопрос - как на самом деле можно решить эту проблему? Единственный способ, который я могу себе представить, это
- fork
b1
(или b2
) и версия c
, которая работает для вилки, и загрузить b1_forked
и c_for_b1_forked
в PyPI, или - Включите код
b1
(или b2
) непосредственно в мой проект
Оба варианта кажутся более проблемными c, чем необходимо.
Что я пробовал
>>> 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
меня немного смущают) .
В этом блоге предполагается, что на данный момент не существует хорошего решения для конфликтующих транзитивных зависимостей. Помогают ли в этом другие проекты (например, поэзия)?