В своем приложении я хотел бы использовать:
packageA
, что требуетpackageX==1.3
packageB
, что требуетpackageX==1.4
packageX==1.5
Как я могу установить несколько версий packageX
с помощью pip, чтобы справиться с этой ситуацией?
В своем приложении я хотел бы использовать:
packageA
, что требует packageX==1.3
packageB
, что требует packageX==1.4
packageX==1.5
Как я могу установить несколько версий packageX
с помощью pip, чтобы справиться с этой ситуацией?
packageX>=1.3,<2
и packageX>=1.4,<2
(при условии, что восходящий пакет X следует семантическому управлению версиями ), тогда у вас, как у разработчика приложений нижнего уровня, не будет проблем с закреплением и использованием, packageX==1.5
и все будут счастливы. Подробнее здесь
Ответы:
pip вам в этом не поможет.
Вы можете указать ему установить определенную версию, но она заменит другую. С другой стороны, использование двух виртуальных машин позволит вам установить обе версии на одном компьютере, но не использовать их одновременно.
Лучше всего установить обе версии вручную, поместив их в свой путь Python с другим именем.
Но если две ваши библиотеки ожидают, что у них будет одно и то же имя (а они должны), вам придется изменить их, чтобы они выбирали нужную им версию с некоторым псевдонимом импорта, например:
import dependencyname_version as dependencyname
В настоящее время нет чистого способа сделать это. Лучшее, на что вы можете надеяться, - это то, что этот взлом сработает.
Я бы предпочел отказаться от одной из двух библиотек и заменить ее эквивалентом или исправить ее, чтобы принять новую версию зависимости и вернуть исправление сообществу.
Загрузите исходный код для ea. пакет. Устанавливайте каждый в свою отдельную папку. Например. У меня был пакет версии 1.10, но я хотел переключиться на версию для разработчиков для некоторой работы. Я скачал исходники модуля Dev:
git clone https://github.com/networkx/networkx.git
cd netwokrx
Я создал папку для этой версии:
mkdir /home/username/opt/python
, то я поставил PYTHONPATH ENV вар в: export PYTHONPATH=/home/username/opt/python/lib/python2.7/site-packages/
. Затем я установил его, используя:python setup.py install --prefix=/home/username/opt/python
Теперь, поскольку мой PYTHONPATH теперь указывает на эту другую папку пакетов сайтов, когда я запускаю python в командной строке и импортирую новый модуль, он работает. Чтобы переключиться обратно, удалите новую папку из PYTHONPATH.
>>> import networkx as nx
>>> nx.__version__
'2.0.dev_20151209221101'
networkx
различиями версий!
sys.path