Как поделиться пакетами между виртуальными средами, используя conda или virtualenv? - PullRequest
0 голосов
/ 12 мая 2018

У меня есть несколько проектов Python, каждый из которых имеет свою виртуальную среду. Кроме того, у меня есть глобальная среда Python. Я хочу совместно использовать одни и те же файлы пакетов между виртуальными / глобальными средами, не копируя их несколько раз (где это возможно).


Environment        Packages
----------------------------------------
GLOBAL:      A    B    C    D    
VENV_1:      A    B    C         E
VENV_2:                C    D         F

Итак, в этом примере:

  • все среды будут совместно использовать одинаковых файлов для C.
  • GLOBAL и VENV_1 также поделятся файлами для A и B.
  • И GLOBAL и VENV_2 будут обмениваться файлами для D.
  • Но поскольку E и F не установлены глобально, виртуальные среды будут устанавливать эти пакеты по отдельности.

Я пытался использовать virtualenv с флагом --system-site-packages, но это просто делает все глобальные пакеты доступными в виртуальной среде. Поэтому, когда я экспортирую свою среду, используя pip freeze, она будет содержать ненужные пакеты.

Как я могу создать виртуальную среду с выбранными пакетами, чтобы, если пакет был установлен глобально, новая копия файлов для этого пакета не создавалась локально? Возможно ли это с помощью conda или virtualenv или любого другого инструмента?

Я использую Windows 10 с Python 3.6.

1 Ответ

0 голосов
/ 12 мая 2018

С PyCharm вы можете связывать проекты, и вы, вероятно, могли бы манипулировать переменными PYTHONPATH в вашем файле venv / Source / activ.bat, но я думаю, что вы ошибаетесь в дереве.

Полагаю, вам будет гораздо лучше настроить частный сервер PyPi ( пример ).При этом вы можете установить pip-инсталляцию в свой новый проект - с дополнительным преимуществом контроля версий и других преимуществ.В противном случае вы просто отмените большую часть преимуществ инкапсуляции, которые виртуальные среды дают вам в первую очередь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...