Модуль 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, особенно при одновременной или командной работе над несколькими проектами.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: