Где должны создаваться виртуальные виртуальные машины?

Я запутался в том, куда я должен положить мои virtualenvs.

С моим первым проектом django я создал проект с помощью команды

django-admin.py startproject djangoproject

Затем я перешел в каталог djangoproject и выполнил команду

virtualenv env

который создал каталог виртуальной среды на том же уровне, что и внутренний каталог djangoproject.

Это неправильное место для создания virtualenv для этого конкретного проекта?

У меня складывается впечатление, что большинство людей хранят все свои virtualenvs вместе в совершенно другом каталоге, например ~/virtualenvs, а затем используют virtualenvwrapper для переключения между ними.

Есть ли правильный способ сделать это?

Ответ 1

Многие люди используют инструмент virtualenvwrapper, который поддерживает все виртуальные виртуальные машины в одном и том же месте (каталог ~/.virtualenvs) и позволяет использовать ярлыки для создавая и удерживая их там. Например, вы можете:

mkvirtualenv djangoproject

а затем позже:

workon djangoproject

Вероятно, плохая идея сохранить каталог virtualenv в самом проекте, поскольку вы не хотите распространять его (это может быть специфично для вашего компьютера или операционной системы). Вместо этого сохраните файл requirements.txt с помощью pip:

pip freeze > requirements.txt

и распределите это. Это позволит другим, использующим ваш проект, переустановить все те же требования в свои virtualenv, используя:

pip install -r requirements.txt

Ответ 2

Изменение местоположения каталога virtualenv нарушает его

Это основное преимущество размещения каталога за пределами дерева репозитория, например. под ~/.virtualenvs с virutalenvwrapper.

В противном случае, если вы сохраните его в дереве проекта, перемещение местоположения проекта приведет к поломке виртуального файла.

Смотрите: Переименование папки virtualenv, не нарушая ее

Существует --relocatable, но, как известно, он не идеален.

Еще одно небольшое преимущество: вам не нужно его .gitignore.

Если бы это было не так, я просто оставил бы мои virtualenvs gitignored в самом дереве проекта, чтобы связать родственные вещи.

Это прекрасно, так как вы, вероятно, никогда не будете повторно использовать данный virtualenv для проектов.

Ответ 3

Общепринятое место для размещения - это то же место, что и установка virtualenvwrapper по умолчанию: ~/.virtualenvs

Связано: virtualenvwrapper - отличный инструмент, который обеспечивает сокращение общих команд virtualenv. http://www.doughellmann.com/projects/virtualenvwrapper/

Ответ 4

Если вы используете pyenv install Python, то лучше использовать pyenv-virtualenv. Если установлен файл .python-version, он может автоматически активировать или деактивировать виртуальный env при смене рабочей папки. Pyenv-virtualenv также помещает все виртуальные env в папку $HOME/.pyenv/versions.