img

Как настроить виртуальное окружение в Python? И чем оно может помочь?

 

How to Set Up a Virtual Environment in Python – And Why It's Useful

Основной подход к разработке программного обеспечения с помощью Python заключается в следующем: вам нужно установить Python на ваш компьютер, установить все необходимые библиотеки с помощью терминала, написать код в отдельном файле .py или блокноте и запустить программу Python в терминале. 

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

Такой подход отлично работает в случае простых сценариев Python. Но если мы говорим о сложных проектах разработки ПО, например, о создании библиотеки Python, API или пакете средств для разработки ПО, то вам придется зачастую работать с несколькими файлами, несколькими пакетами и зависимостями. В результате чего у вас появится необходимость изолировать вашу среду разработки Python для какого-то отдельного проекта. 

Рассмотрим следующий сценарий: вы работаете над приложением А, используя при этом системный Python, и вы устанавливаете пакет Х версии 1.0 в свою глобальную библиотеку Python. После чего вы переключаетесь на проект В на вашем локальном компьютере, и вы устанавливаете тот же пакет Х, но уже версии 2.0, в которой есть некоторые существенно важные отличия от версии 1.0.

Когда вы вернетесь и запустите приложение А, то получите всевозможные ошибки, и ваше приложение просто не запуститься. Это вполне реальная ситуация, с которой вы можете столкнуться в процессе разработки ПО на Python. И для того, чтобы избежать таких ситуаций, вы можете воспользоваться виртуальными окружениями.

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

Что такое виртуальное окружение?

Официальная документация Python гласит:

«Виртуальное окружение – это такая среда Python, для которой интерпретатор Python, библиотеки и сценарии, установленные в ней, изолированы от установленных в других виртуальных окружениях и (по умолчанию) любых библиотек, установленных в «системном» Python, то есть в том, который установлен как часть вашей операционной системы».

Проясним сказанное: когда вы активируете виртуальное окружение своего проекта, ваш проект становится автономным приложением, которое никак не зависит от системного Python и его модулей.

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

Виртуальное окружение делает ваше приложение автономным, что влечет за собой некоторые преимущества:

  • Ваша среда разработки находится непосредственно в вашем проекте, становится изолированной и никак не влияет на «системный» Python или какие-либо другие виртуальные окружения.
  • Вы можете создать новое виртуальное окружение для нескольких версий Python.
  • Вы можете загружать пакеты в ваш проект, не имея при этом прав администратора.
  • Вы можете легко упаковать свое приложение и поделиться им с другими разработчиками, чтобы они могли его скопировать
  • Вы можете легко создать список зависимостей и подзависимостей в файле вашего проекта. Таким образом, другим разработчикам будет проще копировать и устанавливать все зависимости, которые используются в вашем окружении.

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

В следующих разделах мы рассмотрим, как можно настроить виртуальное окружение с помощью модуля venv, который даст вам контроль над вашим окружением. 

Кроме того, существует еще один распространенный способ настройки виртуального окружения – менеджер зависимостей pipenv. Это уже более продвинутый подход. 

Как установить виртуальное окружение с помощью venv

Virtualenv – это инструмент, предназначенный для настройки окружений Python. Начиная с Python 3.3, его сокращенная версия была интегрирована в стандартную библиотеку модуля venv. Вы можете установить venv в свой основной Python, просто выполнив следующую команду в своем терминале:

pip install virtualenv

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

python<version> -m venv <virtual-environment-name>

Пример:

mkdir projectA
cd projectA
python3.8 -m venv env

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

Проверим содержимое папки env. Если вы используете операционную систему macOS, то увидите папку под названием bin. Кроме того, вы увидите сценарии, которые нужны для управления вашим виртуальным окружением, например, activate или pip для установки библиотек, а также интерпретатор Python, подходящий под установленную вами версию Python и многое другое. (В ОС Windows эта папка называется «Scripts» (Сценарии)).

Папка lib будет содержать список библиотек, которые вы установили. Если вы ознакомитесь с ним, то увидите, что это список библиотек, которыми виртуальное окружение снабжено по умолчанию. 

Как активировать виртуальное окружение

После того, как вы создали виртуальное окружение, прежде чем вы сможете использовать его в своем проекте, вам нужно его активировать. Если вы используете ОС macOS, то для того, чтобы активировать виртуальное окружение, вам нужно запустить следующий код:

source env/bin/activate

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

Обратите внимание: для того, чтобы активировать виртуальное окружение в Windows, вам нужно запустить следующий код: 

env/Scripts/activate.bat //In CMD { // в командной строке }
env/Scripts/Activate.ps1 //In Powershel { // в PowerShell }

Как проверить, работает ли виртуальное окружение?

Итак, мы активировали наше виртуальное окружение. Теперь нам нужно проверить, что наш проект действительно изолирован от нашего основного Python. Как это сделать? Для этого вы можете выполнить несколько действий.

Для начала вы должны проверить список пакетов, которые установлены в вашем виртуальном окружении. Для этого нужно запустить приведенный ниже код в активированном виртуальном окружении. Там вы найдете всего лишь два пакета – pip и setuptools. Это базовые пакеты, которыми обладает любое новое виртуальное окружение по умолчанию. 

pip list

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

Как устанавливать библиотеки в виртуальном окружении

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

После того, как вы установите все необходимые библиотеки, вы можете просмотреть их список с помощью команды pip list, или вы можете запустить следующий код и создать отдельный текстовый файл, в котором будет храниться список всех зависимостей вашего проекта:

pip freeze > requirements.txt

В данном случае мы назвали это файл requirements.txt, но вы можете назвать его так, как захотите. 

Файл требований

Почему так важно создавать файл требования для вашего проекта? Давайте представим, что вы упаковали свой проект в zip-файл (без папки env) и вы поделились им со своим другом-разработчиком. 

Для того, чтобы восстановить вашу среду разработки и активировать новое виртуальное окружение, ему нужно просто выполнить описанные выше шаги.

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

~ pip install -r requirements.txt

Обратите внимание, что в большинстве случаев не рекомендуется предоставлять общий доступ к папке env, причем она может быть легко скопирована в любую новую среду.

Как правило, ваш каталог env должен включать в себя файл .gitignore (если вы, конечно, используете систему контроля версий, например, GitHub), чтобы гарантировать, что файл среды нельзя будет добавить в репозиторий проекта. 

Как деактивировать виртуальное окружение

Для того, чтобы деактивировать виртуальное окружение, вам нужно просто запустить следующий код в терминале:

~ deactivate

Заключение

С помощью виртуальных окружений Python вы можете изолировать свои проекты разработки на Python от системного Python и других окружений. Таким образом, вы получите полный контроль над своим проектом, и его будет легко воспроизвести.

Если вы разрабатываете приложение в обычном script.py или Jupiter Notebook, то рекомендуется использовать виртуальное окружение. А теперь, когда вы прочитали эту статью, вы знаете, как ее настроить и использовать. 

Ссылка
скопирована
Программирование
Скидка 25%
Python-программист с нуля
Стань разработчиком на одном из самых популярных языков программирования.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
  Хотите разрабатывать игры на Python? Здесь представлен полный обзор лучших библиотек и фреймворков Python, которые вы можете и
img
Если вы хорошо знаете, что такое глубокое обучение, что, скорее всего, не раз слышали такую фразу: «PyTorch против TensorFlow».
img
  Введение Что такое стек и куча? И то, и то область памяти, но с разными механизмами распределения и управления ресурсами памят
img
  Если вы уже давно работаете с SEO, то, возможно, сталкивались с одной из концепций рендеринга - рендеринга на стороне сервера
img
Введение За счет ветвления в Git разработчики могут работать сразу над несколькими функциями или изменениями, не мешая друг друг
img
Управление памятью в операционных системах Введение Управление памятью – это критически важная и при этом довольно сложная задач
Комментарии
ОСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59