Рубріки: Основы

Модуль venv в Python: как установить и настроить виртуальную среду

Дмитро Сімагін

При разработке приложения на языке Python часто требуется создание изолированной или виртуальной среды (окружения). Раньше это делали с помощью инструмента virtualenv. Начиная с версии Python 3.3, он входит в стандартную библиотеку, выполняя те же функции в модуле venv.

Сегодня мы рассмотрим, какие преимущества дает разработчику модуль venv, как с ним правильно работать и чем он отличается от virtualenv.

Зачем в Python нужна виртуальная среда

Согласно официальной документации Python, виртуальная среда — это одноразовое окружение, не регистрируемое в Git и установленное поверх базовой среды Python. При необходимости ее можно изолировать от пакетов: всех или тех, которые определены программистом. 

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

Как создать виртуальную среду

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

python -m venv ourenv

 

Наименование ourenv — это название вашей виртуальной среды. По желанию вы можете выбрать любое другое имя.

В Windows команда venv вызывается следующим образом:

c:\>Python33\python -m venv c:\path\to\ourenv

 

Дальше нам нужно активировать эту среду. Это делается при помощи команды:

myenv\Scripts\activate

 

Работа внутри виртуальной среды Python

Если активация прошла успешно, то в начале строки терминала отобразится название виртуальной среды. В нашем случае это ourenv. Дальше нужно установить пакеты. Для этого применяется команда pip. Как вы уже помните, поскольку мы работаем в условиях виртуальной среды, пакеты будут установлены только в этом окружении:

pip install package_name

 

Завершив работу в проекте, нужно деактивировать среду. Это делается простой командой deactivate.

Расширенные параметры виртуальной среды

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

/usr/bin/python3.8 -m venv ourenv

 

В этом фрагменте кода /usr/bin/python3.8 является путем к выбранной вами версии Python.

Также вы можете использовать в вашем изолированном окружении параметр –system-site-packages. Он открывает доступ к глобально установленным пакетам Python. Это может быть полезно, если есть потребность использовать определенные пакеты без их повторной установки в виртуальной среде.

python -m venv ourenv --system-site-packages

 

Параметр –symlinks или –copies

  • –symlinks: Использует для экономии места символические ссылки для файлов Python.
  • –copies: Копирует файлы Python в виртуальную среду.

 

Пример с использованием символических ссылок:

python -m venv ourenv --symlinks

 

Пример с копированием файлов:

python -m venv ourenv --copies

 

Параметр –clear

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

python -m venv ourenv --clear

 

Параметр –upgrade

Обновляет существующую виртуальную среду до актуальной версии Python.

python -m venv ourenv --upgrade

 

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

python3.9 -m venv ourenv --system-site-packages --copies

 

Здесь мы создаём изолированное виртуальное окружение ourenv по версии Python 3.9, глобальные пакеты и файлы Python копируются в среду.

Как настроить виртуальную среду в Python

Для управления зависимостями проекта нужен файл requirements.txt. Благодаря ему будет намного проще воспроизвести среду на других компьютерах и системах. Чтобы создать этот файл, после установки выбранных пакетов в вашей изолированной среде выполните команду:

pip freeze > requirements.txt

 

Теперь установим зависимости из requirements.txt. Дл этого на другом компьютере или в другой виртуальной среде введите:

pip install -r requirements.txt

 

Использование переменных окружения

Вы можете выбрать особые переменные окружения для вашей изолированной среды. Это делается путем добавления их в скрипты активации файла activate.bat в директории Scripts.

set MY_VARIABLE=value

 

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

export PYTHONPATH=/path/to/my/modules:$PYTHONPATH

 

Как создать виртуальную среду по шаблону

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

#!/bin/bash

# Создание виртуальной среды с определённой версией Python
python3.9 -m venv myenv --system-site-packages --copies

# Активация виртуальной среды
source myenv/bin/activate

# Установка зависимостей
pip install -r requirements.txt

 

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

chmod +x setup_env.sh
./setup_env.sh

 

В чем различие между venv и virtualenv?

Кроме встроенного модуля venv, в экосистеме Python есть альтернативные инструменты для создания и работы с виртуальными средами. Наиболее известный среди них называется virtualenv.

По своей сути virtualenv — это просто устаревшая версия venv. Но он имеет пару плюсов: поддерживает больше опций и может использоваться со старыми версиями Python. Установка virtualenv происходит по команде:

pip install virtualenv

 

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

virtualenv ourenv --python=python3.8 --always-copy

 

Заключение

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

 

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024