Почему я должен использовать vagrant, если я использую virtualenv?

Я прочитал этот вопрос Нужно ли мне использовать virtualenv с Vagrant? а хотелось бы знать обратное.

Я программирую и развертываю в средах UNIX/Linux (соответственно MAC OSX и Ubuntu), и я использую virtualenv для изоляции сред.

На самом деле я никогда не сталкивался с какими-либо проблемами, но я видел некоторых людей и множество руководств, которые предлагают использовать их вместе, и мне было интересно, если и почему я должен использовать vagrant, может ли кто-нибудь объяснить это мне?


person Jiloc    schedule 21.11.2014    source источник


Ответы (1)


Разница между virtualenv и Vagrant заключается в том, что virtualenv предназначен только для отдельных установок Python, тогда как Vagrant — для всей машины.

  • virtualenv изолирует интерпретатор Python и зависимости Python на одном компьютере, поэтому вы можете установить несколько проектов Python рядом друг с другом с их собственными зависимостями. Но для остальной части машины virtualenv ничего не делает: у вас все еще есть глобальные зависимости/пакеты, которые устанавливаются с помощью вашего менеджера пакетов Mac OS X/Linux, и они совместно используются виртуальными окружениями.

  • Vagrant указывает всю машину: он позволяет указать дистрибутив Linux, устанавливаемые пакеты и действия, которые необходимо выполнить для установки проекта. Поэтому, если вы хотите запустить Vagrant box с несколькими проектами Python на этой машине, вы все равно должны использовать virtualenv, чтобы разделить зависимости Python.

Например, разработчик Mac OS X и разработчик Ubuntu Linux могут использовать virtualenv, чтобы сохранить установленными свои проекты Python, но им нужно будет использовать Vagrant для локального запуска одной и той же машины (например, дистрибутив Linux, соответствующий развернутому серверу). для запуска точно такой же версии Linux с теми же установленными на ней пакетами и с теми же установками проекта Python.

Итак, чтобы ответить на ваш вопрос, причина использования Vagrant заключается в том, что он позволяет вам локально создать машину с точными установленными пакетами, тогда как virtualenv будет заниматься только зависимостями Python.

person Simeon Visser    schedule 21.11.2014
comment
Спасибо за объяснение @Simeon - person Hasitha Prageeth; 17.05.2017