hostprofi.ru
Подобрать хостинг
Термин·буква V

virtualenv

краткое определение

virtualenv — инструмент Python для создания изолированных виртуальных окружений: каждый проект получает собственный интерпретатор Python и набор pip-пакетов без конфликтов с системными зависимостями.

virtualenv — инструмент для создания изолированных окружений Python. Каждое окружение содержит собственную копию интерпретатора Python и независимый набор установленных пакетов (site-packages). Это позволяет проектам использовать разные версии одной библиотеки без конфликтов: проект A требует Django 3.2, проект B — Django 5.0, и оба работают на одной машине.

Как использовать

# Создать окружение
python3 -m venv venv

# Активировать (Linux/macOS)
source venv/bin/activate

# Активировать (Windows)
venv\Scripts\activate

# Установить зависимости
pip install django==5.0 psycopg2

# Сохранить зависимости
pip freeze > requirements.txt

# Деактивировать
deactivate

После активации which python показывает путь внутри venv/, а не системный. Переменная PATH временно переопределяется.

История

virtualenv создан Яном Биккингом (Ian Bicking) в 2007 году как решение проблемы «dependency hell» в Python. До virtualenv пакеты устанавливались глобально, что приводило к конфликтам версий. В Python 3.3 (2012) появился встроенный модуль venv — упрощённая версия virtualenv, интегрированная в стандартную библиотеку. virtualenv как отдельный проект продолжил развитие: он быстрее, поддерживает Python 2/3 и дополнительные опции создания окружений. С 2020-х годов Conda и Poetry стали популярными альтернативами для data science и управления зависимостями.

virtualenv vs venv vs Conda

ИнструментВстроенPython 2Non-Python пакетыПрименение
virtualenvНет (pip install)ДаНетВеб-разработка
venv (stdlib)Python 3.3+НетНетПростые проекты
CondaНет (Miniconda)ДаДа (C, R)Data science, ML

virtualenvwrapper и Poetry

virtualenvwrapper — обёртка для удобного управления окружениями: mkvirtualenv project, workon project, deactivate. Poetry — современный менеджер зависимостей и упаковщик, который управляет виртуальным окружением автоматически через pyproject.toml; рекомендован для новых проектов начиная с 2021 года. pipenv — альтернатива, создаёт Pipfile и Pipfile.lock.

На что обращать внимание в хостинге

На VPS с Python-приложениями виртуальное окружение — обязательная практика. При деплое через CI/CD: окружение создаётся заново из requirements.txt или pyproject.toml. В Docker-контейнерах виртуальное окружение часто избыточно — контейнер сам является изолированным окружением, но его использование допустимо в многоступенчатых сборках для точного контроля зависимостей. На PaaS-платформах (Heroku, Railway) requirements.txt читается автоматически без необходимости управлять venv вручную.

virtualenv vs venv vs conda vs poetry

ИнструментКогда использоватьОсобенности
python -m venvБольшинство проектовВстроен в Python 3.3+
virtualenvPython 2, ускорение созданияPip-пакет, cache пакетов
CondaData science, MLC/FORTRAN-библиотеки, non-Python пакеты
poetryБиблиотеки, публикация PyPIpyproject.toml, lock-файл

История virtualenv

virtualenv создан Яном Биккингом (Ian Bicking) в 2007 году. В Python 3.3 (2012) появился стандартный venv. На VPS с несколькими Python-приложениями каждое получает собственное окружение. Gunicorn запускается с интерпретатором из venv: /opt/app/venv/bin/gunicorn app:application. В systemd-юните ExecStart указывает на бинарник внутри venv. В Docker виртуальное окружение избыточно.

Другие термины