Какая связь между средами и проектами в 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 для обмена библиотеками.