Самый мощный инструмент разработчика

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

Нужна виртуальная среда?

Допустим, у меня есть два проекта Django, один из которых использует Django1.9, а другой - Django3.2. Теперь поддерживать эти две версии вместе в одной системе может быть очень сложно (честно говоря, я не знаю, возможно ли это вообще без создания виртуальной среды). В этом случае использование виртуальной среды сэкономит вам много времени; создайте две отдельные среды и, скажем, env1 и env2, установите Django == 1.9 в env1 и установите Django == 3.2 в env2, проблема решена !.

Вы даже можете заставить env1 использовать python2, а env2 - использовать python3. Кто-то скажет обновить до последней версии, но что, если вы получили какой-то проект из колледжа или вашей компании, в котором вы работаете, который использует старую версию зависимостей, обновленную версию которой вы используете прямо сейчас. Очевидно, вам не понравится удалять последнюю версию и устанавливать более старую, а затем снова последнюю. Именно здесь появляются виртуальные среды, которые экономят ваше время и напряжение.

А пока достаточно теории, давайте посмотрим, как создать виртуальную среду и поиграться с ней.

Создание виртуальной среды

Мы будем решать проблему тех двух проектов Django, о которых я говорил ранее в статье; загрузите вашу систему, и приступим.

Во-первых, чтобы создать виртуальную среду, установите в вашу систему библиотеку virtualenv; для этого откройте командную строку и введите следующую команду:

pip install virtualenv

Перейдите в каталог вашего проекта (который использует django1.9) и создайте виртуальную среду с именем env1 (или любым другим именем по вашему выбору):

virtualenv env1

Это создаст папку с именем env1 в каталоге вашего проекта. Теперь, чтобы использовать этот env1, вам нужно сначала активировать его; в противном случае, как мы узнаем, в какой среде мы устанавливаем зависимости.

Активируйте свою среду,

Для Windows (убедитесь, что вы находитесь в том же каталоге, что и env1)

env1\Scripts\activate

Для Linux / macOS

source env1/bin/activate

Вы создали и активировали среду env1. Давайте установим Django1.9 в этом env1; запустите для этого команду pip.

pip install django==1.9

Вуаля !, теперь в вашем env1 есть django1.9, и вы можете использовать его для своего проекта, который хочет использовать то же самое, всегда запускайте свой проект после активации этой среды env1; в противном случае ваш проект не будет работать, ну, очевидно, потому что django1.9 установлен в вашем env1, а не в вашей системе.

Теперь мы хотим выйти из этого env1, перейти к другому нашему проекту, который использует django3.2, создать среду env2 и установить в ней django3.2. Чтобы выйти из env1, оставайтесь в папке проекта (в которой есть env1) и выполните следующую команду:

deactivate

Это будет работать как для Windows, так и для linux / macOS.

Теперь, когда вы вышли из env1, выполните все шаги еще раз и используйте разные версии Django для обоих ваших проектов, активировав соответствующую среду (env1 или env2).

Вы можете бесконечно много сред для ваших бесконечно многих проектов.

Один совет: если вы когда-нибудь захотите посмотреть, какие зависимости существуют в среде, просто выполните следующую команду (очевидно, после активации этой среды; в противном случае она распечатает все зависимости, которые вы когда-либо устанавливали в своей системе):

pip freeze

Это напечатает все зависимости, установленные в вашей среде.

Вы также можете сохранить имена этих зависимостей в файле require.txt, выполнив следующие действия:

pip freeze > requirements.txt

Кстати, этот файл requirements.txt используется практически везде, в основном при развертывании веб-сайта Django на каком-либо домене.

И мы закончили с пониманием необходимости виртуальных сред и того, как их создавать и использовать.

Выход

Я бы рекомендовал всем разработчикам python использовать виртуальные среды для ваших проектов; это вам обязательно поможет. Это все для этого блога. В случае возникновения каких-либо вопросов, вы можете прокомментировать этот блог или написать мне.

Спасибо и удачного обучения!