Главная Веб-разработка Python venv: что такое виртуальное окружение и как им пользоваться

Python venv: что такое виртуальное окружение и как им пользоваться

от admin

Учимся изолировать код от внешнего мира и предотвращать хаос в зависимостях.

Мы упомянули понятие «виртуальное окружение» вместе с терминами virtual environment и venv, которые часто используются как синонимы. Однако между ними есть разница: virtual environment — это общий термин, обозначающий концепцию изолированной среды в Python, а venv — конкретный модуль в стандартной библиотеке Python для создания виртуальных окружений. В статье мы создадим виртуальное окружение с помощью venv, активируем его и потренируемся им пользоваться.

Подготовительная часть

Начать работу с виртуальным окружением несложно. Однако прежде вам нужно установить Python и редактор кода, а также освоить базовые навыки работы с командной строкой. Если всё это у вас уже есть, можете сразу переходить к следующему разделу.

«Как запустить Python офлайн и онлайн: руководство для новичка» — статья, в которой мы рассматриваем системные требования, помогаем с выбором версии языка и предлагаем пошаговые инструкции по установке Python на Windows, Linux и macOS.

После установки Python откройте терминал и введите следующую команду. Она должна вывести номер установленной версии:

python –version

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

«Visual Studio Code: установка, настройка, русификация и список горячих клавиш» — подробное руководство по настройке бесплатного редактора VS Code. Рекомендуем также установить расширение Python для VS Code, которое включает функции отладки, автодополнения кода, форматирования и интеграции с виртуальными окружениями.

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

  • Разработка нескольких проектов с разными зависимостями. Например, один проект может требовать Python 3.7 и Django 2.2, а другой — Python 3.9 и Django 3.2. Виртуальные окружения позволяют легко переключаться между обоими проектами на одном компьютере, избегая конфликтов между версиями.
  • Изоляция проекта от системных библиотек. Предположим, на вашем компьютере установлена версия NumPy 1.18, а проекту требуется версия 1.20. Виртуальное окружение позволяет установить и использовать нужную версию библиотеки для конкретного проекта, не затрагивая системные установки.
  • Обучение и экспериментирование. Виртуальные окружения служат безопасной площадкой для изучения новых библиотек и версий Python. Они позволяют тестировать инструменты без риска нарушить работу существующих проектов.
  • Упрощение развёртывания проектов на разных машинах. Виртуальное окружение облегчает передачу проекта другим разработчикам или клиентам. Достаточно отправить коллеге файл со списком всех зависимостей проекта и их версий, и он сможет воссоздать копию вашей рабочей среды на своём компьютере.

Как создать виртуальное окружение: create venv python

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

python -m venv my_project_environment

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

Перейдём к практике и разберём сценарий, когда на одном компьютере нам нужно создавать два проекта: первый — на Django 2.2, а второй — на Django 3.2.

Python venv: что такое виртуальное окружение и как им пользоваться

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

# Создание виртуального окружения для проекта с Django 2.2 python -m venv django_2_2_env # Создание виртуального окружения для проекта с Django 3.2 python -m venv django_3_2_env

После выполнения команд в терминале не произойдёт видимых изменений. Однако в фоновом режиме Python создаст изолированную среду, скопирует нужные файлы и настроит пути для работы с пакетами.

Python venv: что такое виртуальное окружение и как им пользоваться

Интерфейс терминала после создания двух виртуальных окружений
Скриншот: Командная строка Windows / Skillbox Media

Как активировать виртуальное окружение: activate venv python

После создания виртуального окружения останьтесь в директории проекта и выполните команду активации:

  • для Windows: myenv\Scripts\activate;
  • для macOS и Linux: source myenv/bin/activate.

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

Мы создали два виртуальных окружения, но активировать можно только одно за раз. Давайте активируем окружение django_2_2_env в Windows:

django_2_2_envScriptsactivate

Python venv: что такое виртуальное окружение и как им пользоваться

Интерфейс терминала после активации виртуального окружения
Скриншот: Командная строка Windows / Skillbox Media

Теперь перейдём в VS Code и убедимся, что виртуальное окружение активировано и мы можем начать работу над нашим проектом:

  • введите в терминале команду code . для запуска VS Code;
  • в VS Code откройте новый терминал через меню ViewTerminal;
  • убедитесь, что в терминале VS Code отображается название вашего виртуального окружения. В нашем случае это django_2_2_env.

Если всё прошло успешно 😁, вы можете сразу приступить к работе. Если нет — изучите сообщения в терминале и определите, что именно нужно исправить. Например, мы столкнулись с проблемой активации виртуального окружения через команду терминала из-за политики выполнения PowerShell. Это распространённая ситуация в Windows.

Читать также:
Округление в Python: выбираем лучший способ

Python venv: что такое виртуальное окружение и как им пользоваться

Пример ошибки активации виртуального окружения в редакторе VS Code
Скриншот: Visual Studio Code / Skillbox Media

Если столкнётесь с такой же проблемой, откройте PowerShell от имени администратора и выполните следующую команду:

Set-ExecutionPolicy RemoteSigned

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

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

pathtovenvScriptsactivate.bat

pathtovenv — это путь к вашему виртуальному окружению. В нашем примере команда будет выглядеть так:

django_2_2_envScriptsactivate.bat

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

Python venv: что такое виртуальное окружение и как им пользоваться

Мы устранили ошибку, активировали виртуальное окружение и теперь можем приступить к работе над проектом. Давайте установим Django 2.2:

pip install django==2.2

Убедимся, что нужная версия Django установлена:

python -m django –version

Также проверим местоположение нашего виртуального окружения:

pip -V

Python venv: что такое виртуальное окружение и как им пользоваться

Результат команды показывает, что мы используем PIP версии 24.2 в виртуальном окружении django_2_2_env. Это подтверждает, что мы работаем в нужном окружении с Django 2.2. Также в выводе указана версия Python. В данном случае это новая версия Python 3.12, которая может быть несовместима с Django 2.2
Скриншот: Visual Studio Code / Skillbox Media

После активации виртуального окружения Python создаёт структуру файлов и папок, обеспечивающую изоляцию проекта и управление зависимостями. Эта структура включает в себя папки Include, Lib и Scripts, а также файл pyvenv.cfg:

Python venv: что такое виртуальное окружение и как им пользоваться

Структура файлов и папок виртуального окружения Python venv
Скриншот: Visual Studio Code / Skillbox Media

  • activate и activate.bat — скрипты для активации виртуального окружения;
  • deactivate.bat — скрипт для деактивации окружения;
  • python.exe — исполняемый файл Python для данного окружения;
  • pip.exe — утилита для установки пакетов и управления ими.

Как выйти из виртуального окружения: deactivate venv python

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

deactivate

После этого введите pip -V и убедитесь, что вы больше не находитесь в виртуальном окружении. Если деактивация не произошла, перезапустите VS Code и повторите процесс. Вот несколько дополнительных советов:

  • python -m venv –help — используйте эту команду для просмотра всех доступных опций при создании виртуального окружения и работе с ним.
  • Virtualenvwrapper — попробуйте этот инструмент, если вам часто приходится создавать несколько виртуальных окружений и переключаться между ними. Он удобнее стандартного venv, поскольку предоставляет простые команды для управления виртуальными окружениями и хранит все окружения в одном месте.
  • pip install –upgrade [имя_пакета] — применяйте эту команду примерно раз в месяц или при выходе важных обновлений безопасности. Это поможет поддерживать актуальность пакетов в вашем виртуальном окружении.

Теперь активируем второе виртуальное окружение django_3_2_env:

django_3_2_envScriptsactivate.bat

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

  • в Windows: rmdir /s /q имя_окружения;
  • в macOS и Linux: rm -rf имя_окружения.

Имя_окружения — название окружения, которое вы деактивировали и хотите удалить.

Теперь применим новую команду и попробуем удалить второе окружение:

rmdir /s django_3_2_env

Эта команда должна полностью удалить директорию виртуального окружения, однако иногда она не срабатывает и выдаёт такую ошибку:

+ CategoryInfo : InvalidArgument: (:) [Remove-Item], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

Эта ошибка часто возникает из-за особенностей работы PowerShell в Windows, связанных с ограничениями доступа или блокировкой файлов системой. Для её устранения воспользуйтесь альтернативной командой:

Remove-Item -Recurse -Force django_3_2_env

Если альтернативная команда не сработала, закройте все программы и процессы, которые могут использовать файлы в этой директории. Затем перезапустите редактор кода и попробуйте снова удалить окружение. Такова она, жизнь программиста ¯(ツ)/¯

Python venv: что такое виртуальное окружение и как им пользоваться

Мы удалили django_3_2_env, и в каталоге файлов осталось лишь django_2_2_env. Вместе с удалённым окружением исчез и его конфигурационный файл
Скриншот: Visual Studio Code / Skillbox Media

Альтернативные виртуальные окружения

Помимо venv, есть и другие инструменты для создания изолированных сред в Python, которые лучше подходят для определённых задач. Рассмотрим некоторые из них:

Выбор инструмента зависит от специфики проекта, личных предпочтений и требований команды. Например, специалист по data science может предпочесть Conda вместо venv для работы с большими объёмами данных и выполнения сложных вычислений.

Директория — это папка на компьютере, содержащая файлы и другие папки. Например, директория «Документы» может хранить ваши рабочие файлы.

Похожие статьи