Самый мощный инструмент разработчика
Виртуальная среда - это инструмент, который помогает поддерживать зависимости / библиотеки, необходимые для разных проектов, путем создания среды для каждого проекта отдельно. Каждый третий разработчик 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 использовать виртуальные среды для ваших проектов; это вам обязательно поможет. Это все для этого блога. В случае возникновения каких-либо вопросов, вы можете прокомментировать этот блог или написать мне.
Спасибо и удачного обучения!