Какова связь между средами и проектами в virtualenvwrapper?

Другими словами, какая разница между mkvirtualenv и mkproject ?

У меня есть рабочий процесс, который выглядит так:

 /dev projectA appA appB projectB appA appB 

Все приложения имеют некоторые ресурсы (например, юг, pep8 и т. Д.), Но другие ресурсы относятся к каждому приложению. Должен ли я использовать virtualenvwrapper «проекты», чтобы разделить эти зависимости?

Из моего понимания документации mkvirtualenv projectenv просто создает новую виртуальную среду с именем projectenv в $WORKON_HOME , а mkproject projectenv создает новую виртуальную среду с именем projectenv и новый каталог с именем projectenv ; после создания каталог projectenv автоматически становится вашим текущим рабочим каталогом. Виртуальная среда будет существовать в $WORKON_HOME а каталог разработки существует в $PROJECT_HOME .

Обратите внимание, что для mkproject работы mkproject вы должны сначала установить переменную среды PROJECT_HOME в имя каталога, в котором вы хотите, чтобы проекты были созданы. Вы можете сделать это в том же месте, где вы $WORKON_HOME переменную $WORKON_HOME или настроить ее на лету, например

 export PROJECT_HOME=$HOME/src/allprojects mkproject mynewproject 

mynewproject теперь будет вашей текущей виртуальной средой, и новый каталог mynewproject будет существовать в ~/src/allprojects .

mkvirtualenv – это команда virtualenvwrapper, которая упрощает управление виртуальными виртуальными машинами python, а mkproject – из плагина virtualenvwrapper для управления вашими проектами (которые были интегрированы непосредственно в virtualenvwrapper)

на странице плагина упоминаются следующие функции:

Управляет вашими проектами работы с проектами вместе с вашими виртуальными средами. Определяет API для создания шаблонов для быстрого создания новых сред. Используйте команду workon от virtualenvwrapper для переключения между проектами. Пользовательские переключатели для настройки новых проектов.

Вам не нужно создавать или управлять своими проектами с помощью плагина virtualenvwrapper, чтобы использовать команды virtualenv. Это просто удобный плагин для таких вещей, как замена каталога проекта при выпуске команды workon или создание новых проектов из шаблонов.

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

EDIT: virtualenvwrapper теперь имеет функции для копирования virtualenvs и добавления каталогов в вашу виртуальную PATH для обмена библиотеками .