Подтвердить что ты не робот

Установка нескольких версий пакета с помощью pip

В моем приложении я хотел бы использовать:

  • packageA, для которого требуется packageX==1.3
  • packageB, для которого требуется packageX==1.4
  • packageX==1.5

Как я могу установить несколько версий packageX с pip для обработки этой ситуации?

4b9b3361

Ответ 1

pip вам не поможет.

Вы можете сказать ему, чтобы установить определенную версию, но она переопределит другую. С другой стороны, использование двух virtualenvs позволит вам устанавливать обе версии на одном компьютере, но не использовать их одновременно.

Лучше всего установить обе версии вручную, поместив их в свой путь Python с другим именем.

Но если ваши две библиотеки ожидают, что они будут иметь одно и то же имя (и они должны), вам придется изменить их, чтобы они подбирали нужную версию с некоторым псевдонимом импорта, например:

import dependencyname_version as dependencyname

В настоящее время нет чистого способа сделать это. Самое лучшее, на что вы можете надеяться, - это заставить этот хак работать.

Я предпочел бы вырезать одну из двух библиотек и заменить ее эквивалентом или исправить ее, чтобы принять новую версию зависимостей и вернуть патч сообществу.

Ответ 2

Загрузите источник для ea. пакет. Установите их в отдельной папке. Например. У меня был пакет версии 1.10, но мне хотелось перейти на версию dev для некоторой работы. Я загрузил источник для модуля dev: git clone https://github.com/networkx/networkx.git cd netowkrx Я создал папку для этой версии: mkdir /home/username/opt/python, тогда я устанавливаю значение PYTHONPATH env var: 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'