• en
  • Language: ru
  • Documentation version: latest

11. Виртуальная среда

Слышали ли вы когда-нибудь о virtualenv? Если вы новичок, то, возможно, вы и не слышали о нем, но если вы опытный программист, то он вполне может быть важной частью вашего набора инструментов.

Итак, что же такое virtualenv? Virtualenv - это инструмент, который позволяет нам создавать изолированные среды python. Представьте, что у вас есть приложение, которому нужна версия 2 библиотеки, а другому приложению нужна версия 3. Как вы можете использовать и разрабатывать оба этих приложения?

Если вы устанавливаете все в /usr/lib/python2.7/site-packages (или любое другое стандартное расположение вашей платформы), легко оказаться в ситуации, когда вы непреднамеренно обновляете пакет.

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

Что вы будете делать? Используйте virtualenv! Он создает изолированное окружение для вашего приложения python и позволяет вам устанавливать библиотеки Python в это изолированное окружение вместо того, чтобы устанавливать их глобально.

Чтобы установить его, просто введите эту команду в оболочке:

$ pip install virtualenv

Наиболее важными командами являются:

  • $ virtualenv myproject

  • $ source myproject/bin/activate

Первая команда создает изолированную среду virtualenv в папке myproject, а вторая команда активирует эту изолированную среду.

При создании virtualenv вы должны принять решение. Хотите ли вы, чтобы virtualenv использовал пакеты из вашей системы site-packages или установил их в site-пакеты virtualenv? По умолчанию virtualenv не будет предоставлять доступ к глобальному site-packages.

Если вы хотите, чтобы ваш virtualenv имел доступ к вашим системам site-packages, используйте переключатель --system-site-packages при создании virtualenv следующим образом:

$ virtualenv --system-site-packages mycoolproject

Вы можете отключить , набрав env:

$ deactivate

Запуск python после деактивации снова будет использовать вашу системную установку Python.

Бонус

Вы можете использовать smartcd, который является библиотекой для bash и zsh и позволяет изменять окружение bash (или zsh) при cd. Это может быть действительно полезно для активации и деактивации virtualenv при смене каталогов. Я использовал его довольно часто и люблю его. Вы можете прочитать больше об этом на GitHub.

Это было лишь краткое введение в virtualenv. Есть еще много интересного; this link содержит больше информации.