Нужно ли использовать virtualenv с Vagrant?

Я использовал ручные настройки VirtualBox с virtualenvs внутри них, чтобы запускать проекты Django на моем локальном компьютере. Недавно я обнаружил Вагранта и решил переключиться на него, потому что он кажется очень легким и полезным.
Но я не могу понять - мне все еще нужно использовать virtualenv Vagrant VM, поощряется ли это практика или запрещено?

Ответ 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 и не решает проблему с родными расширениями, которые все равно будут смешиваться с системой.