У своєму додатку я хотів би використовувати:
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