Где должны создаваться виртуальные виртуальные машины?
Я запутался в том, куда я должен положить мои 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
.