Virtual Environment в Python — зачем нужен и как использовать
Python — один из самых популярных языков программирования, но у новичков часто возникает проблема: установил одну библиотеку для проекта, а она «сломала» другой проект. Или одна программа требует старую версию пакета, а другая — новую.
Именно для решения этой проблемы существуют virtual environment (виртуальные окружения).
Что такое Virtual Environment
Virtual Environment (виртуальное окружение) — это изолированная среда Python для отдельного проекта.
Проще говоря:
- у каждого проекта свои библиотеки;
- свои версии пакетов;
- свои настройки Python;
- проекты не конфликтуют друг с другом.
Без виртуального окружения все библиотеки устанавливаются глобально в систему. Со временем начинается хаос:
- несовместимые версии;
- ошибки зависимостей;
- проблемы после обновлений;
- «у меня работало вчера».
Virtual environment решает это.
Как это работает
Когда создается виртуальное окружение, Python делает отдельную папку со своей структурой:
project/
│
├── venv/
│ ├── Scripts/
│ ├── Lib/
│ └── ...
│
├── main.py
└── requirements.txt
Внутри:
- собственный Python-интерпретатор;
- собственный pip;
- собственные библиотеки.
То есть проект использует пакеты только из своего окружения.
Зачем это нужно
1. Изоляция проектов
Например:
Проект №1
Требует:
Django 3.2
Проект №2
Требует:
Django 5.0
Без virtual environment они конфликтуют.
С virtual environment оба проекта работают независимо.
2. Чистая система
Без venv Python быстро превращается в «свалку» библиотек:
pip install ...
pip install ...
pip install ...
Через год уже невозможно понять:
- что нужно;
- что не нужно;
- что используется.
3. Удобная передача проекта
Можно сохранить зависимости:
pip freeze > requirements.txt
И другой человек установит всё одной командой:
pip install -r requirements.txt
Встроенный модуль venv
Начиная с Python 3, виртуальные окружения входят в стандартную поставку.
Модуль называется:
venv
Это официальный способ создания окружений.
Как создать virtual environment
Windows
Перейдите в папку проекта:
cd myproject
Создайте окружение:
python -m venv venv
Linux / macOS
python3 -m venv venv
Что означает эта команда
python -m
Запустить модуль Python.
venv
Модуль создания виртуального окружения.
venv
Название папки окружения.
Можно назвать как угодно:
python -m venv env
python -m venv .venv
python -m venv project_env
Но чаще используют:
venv
или
.venv
Как активировать virtual environment
После создания окружение нужно активировать.
Windows CMD
venv\Scripts\activate
Windows PowerShell
.\venv\Scripts\Activate.ps1
Linux / macOS
source venv/bin/activate
Как понять, что окружение активно
В терминале появится префикс:
(venv)
Например:
(venv) C:\Projects\myapp>
Это значит:
- используется локальный Python;
- pip работает внутри окружения;
- библиотеки ставятся только в этот проект.
Установка библиотек внутри окружения
После активации:
pip install requests
Пакет установится только в этот проект.
Проверка установленных библиотек
pip list
Сохранение зависимостей
Очень важная команда:
pip freeze > requirements.txt
Она сохраняет все библиотеки и версии.
Пример:
requests==2.32.0
numpy==2.1.1
flask==3.0.2
Установка зависимостей из файла
pip install -r requirements.txt
Это особенно важно:
- для командной разработки;
- серверов;
- Docker;
- GitHub-проектов.
Как отключить окружение
deactivate
После этого терминал вернется к системному Python.
Нужно ли добавлять venv в Git
Обычно — нет.
В .gitignore добавляют:
venv/
или
.venv/
Потому что окружение:
- большое;
- генерируется автоматически;
- зависит от ОС.
В репозиторий обычно кладут только:
requirements.txt
Где хранить virtual environment
Есть несколько подходов.
Внутри проекта
project/venv
Плюсы:
- удобно;
- просто;
- VS Code автоматически находит.
Минусы:
- занимает место внутри проекта.
Отдельно от проекта
C:\venvs\project1
Плюсы:
- чище структура.
Минусы:
- менее удобно новичкам.
Virtualenv vs venv
Раньше был популярен пакет:
virtualenv
Сейчас чаще используют встроенный:
venv
Отличия
venv
- встроен в Python;
- официальный;
- проще.
virtualenv
- сторонний пакет;
- быстрее создаёт окружения;
- больше возможностей.
Для большинства задач достаточно venv.
Poetry — современный подход
Сегодня многие используют Poetry.
Он автоматически:
- создаёт virtual environment;
- управляет зависимостями;
- ведёт lock-файл;
- упрощает публикацию пакетов.
Официальный сайт: Poetry
Pipenv
Ещё один популярный инструмент — Pipenv.
Комбинирует:
- pip;
- virtualenv;
- управление зависимостями.
Официальный сайт: Pipenv
VS Code и virtual environment
Visual Studio Code обычно автоматически предлагает выбрать виртуальное окружение.
Если нет:
Ctrl + Shift + P
Введите:
Python: Select Interpreter
И выберите:
./venv
Частые ошибки
1. pip ставит библиотеки не туда
Проверьте:
where python
where pip
Linux/macOS:
which python
which pip
2. Окружение не активируется в PowerShell
Разрешите выполнение скриптов:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
3. Забыл активировать venv
Очень частая ошибка.
Смотрите на префикс:
(venv)
Полезные команды
Создать окружение
python -m venv venv
Активировать
Windows
venv\Scripts\activate
Linux/macOS
source venv/bin/activate
Установить пакет
pip install requests
Сохранить зависимости
pip freeze > requirements.txt
Установить зависимости
pip install -r requirements.txt
Отключить окружение
deactivate
Итоги
Virtual environment — обязательный инструмент для Python-разработки.
Он позволяет:
- изолировать проекты;
- избегать конфликтов библиотек;
- удобно переносить проекты;
- поддерживать порядок в системе;
- делать воспроизводимую среду разработки.
Сегодня использование virtual environment считается стандартом практически в любом Python-проекте — от маленьких скриптов до крупных AI-систем и веб-приложений.
