Какая связь между средами и проектами в virtualenvwrapper?
Другими словами, какая разница между mkvirtualenv
и mkproject
?
У меня есть рабочий процесс, который выглядит так:
/dev
projectA
appA
appB
projectB
appA
appB
Все приложения имеют некоторые ресурсы (например, юг, pep8 и т.д.), Но другие ресурсы относятся к каждому приложению. Должен ли я использовать virtualenvwrapper "проекты", чтобы разделить эти зависимости?
Ответы
Ответ 1
Из моего понимания документации 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
.
Ответ 2
mkvirtualenv - это команда virtualenvwrapper, которая упрощает управление виртуальными виртуальными машинами python, а mkproject - из плагина virtualenvwrapper для управления вашими проектами (которые были интегрированы непосредственно в virtualenvwrapper)
на странице плагина упоминаются следующие функции:
Управляет вашими проектами работы с проектами вместе с вашими виртуальными средами. Определяет API для создания шаблонов для быстрого создания новых сред. Используйте команду workon от virtualenvwrapper для переключения между проектами. Пользовательские переключатели для настройки новых проектов.
Вам не нужно создавать или управлять своими проектами с помощью плагина virtualenvwrapper, чтобы использовать команды virtualenv. Это просто удобный плагин для таких вещей, как замена директории проекта при выпуске команды workon или создание новых проектов из шаблонов.
virtualenv для себя не имеет возможности обмена библиотекой, за исключением системных сайтов-пакетов, если вы используете правильный флаг. Я наткнулся однажды на проект, который дал вам эту способность, помимо всего прочего, но так и не нашел его снова.
EDIT: virtualenvwrapper теперь имеет функции для копирования virtualenvs и добавления каталогов в вашу виртуальную PATH для обмена библиотеками.