Я использовал ручные настройки VirtualBox с virtualenvs внутри них, чтобы запускать проекты Django на моем локальном компьютере. Недавно я обнаружил Вагранта и решил переключиться на него, потому что он кажется очень легким и полезным.
Но я не могу понять - мне все еще нужно использовать virtualenv Vagrant VM, поощряется ли это практика или запрещено?
Нужно ли использовать virtualenv с Vagrant?
Ответ 1
Если вы запускаете одну виртуальную виртуальную машину для каждого проекта, тогда нет прямой причины использовать virtualenv.
Если другие участники не используют бродягу, но используют virtualenv, тогда вы можете использовать его и поддерживать его, чтобы облегчить жизнь.
Ответ 2
Как Devin заявил, нет необходимости использовать virtualenv
при развертывании на бродячую машину, пока вы являетесь единственным пользователем машины. Однако я бы все же включил использование virtualenv
, setup.py и т.д., Даже если вы не используете его для разработки или развертывания.
В моем (не очень) скромном мнении любой проект Python должен:
- Включить файл .cvsignore, .gitignore,.hgignore,..., который игнорирует общие промежуточные файлы Python, а также каталоги
virtualenv
. - Файл requirements.txt, в котором перечислены необходимые пакеты в формате pip-compliant
-
Включите Makefile со следующими целями:
- среда: создайте виртуальную среду с помощью
virtualenv
илиpyvenv
- требования: установите требуемые пакеты с помощью
pip
и файла requirements.txt - разработать: запустить
setup.py develop
с помощью виртуальной среды - test: запустите
setup.py test
- clean: удаление промежуточных файлов, отчетов о покрытии и т.д.
- поддерживающий-чистый: удаление виртуальной среды
Идея состоит в том, чтобы сделать Makefile максимально простым. Зависимости должны быть настроены так, чтобы вы могли клонировать репозиторий (или извлекать исходный архив) и запускать
make test
. Он должен создать виртуальную среду, установить требования и выполнить модульные тесты. - среда: создайте виртуальную среду с помощью
Вы также можете включить в Makefile файл Vagrantfile и бродягу, который запускает бродягу. Добавьте vagrant destroy
к цели поддерживающий-чистый, пока вы находитесь на ней.
Это делает ваш проект пригодным для использования любым, кто использует бродягу или развивается без него. Если (когда) вам нужно использовать развертывание вместе с другим проектом в бродяжней или физической среде, включая чистую setup.py и Vagrantfile, которые описывают вашу минимальную среду, упрощает ее установку в виртуальную среду или общую машину бродяг.
Ответ 3
Virtualenv и другие формы изоляции (Docker, выделенный VM,...) не обязательно являются взаимоисключающими. Использование virtualenv по-прежнему является хорошей идеей, даже в изолированной среде, для защиты виртуальной системы Python от ваших пакетов проектов. * Системы nix используют множество утилит на основе Python, зависящих от конкретных версий пакетов, доступных в системе Python, и вы не хотите с ними связываться.
Помните, что virtualenv все еще может работать только до чистых пакетов Python и не решает проблему с родными расширениями, которые все равно будут смешиваться с системой.