Методический материал: Виртуальные окружения Python
Цель
Виртуальное окружение (Virtual Environment) позволяет создавать изолированное пространство для проекта Python, в котором устанавливаются собственные версии библиотек независимо от других проектов и системного Python.
Преимущества:
- изоляция зависимостей проектов;
- предотвращение конфликтов версий пакетов;
- воспроизводимость среды разработки;
- упрощение развертывания приложений.
⸻
- Классическое виртуальное окружение (venv)
Создание окружения
Перейдите в каталог проекта:
cd my_project
Создайте виртуальное окружение:
python -m venv .venv
Рекомендуемое имя каталога окружения:
.venv
Структура проекта:
my_project/
├── .venv/
├── main.py
└── requirements.txt
⸻
Активация окружения
Linux / macOS
source .venv/bin/activate
Windows (PowerShell)
.venv\Scripts\Activate.ps1
Windows (CMD)
.venv\Scripts\activate.bat
После активации в терминале появляется префикс:
(.venv)
⸻
Установка пакетов
pip install requests
Проверка установленных пакетов:
pip list
⸻
Сохранение зависимостей
Создание файла зависимостей:
pip freeze > requirements.txt
Пример:
requests==2.32.4
urllib3==2.5.0
certifi==2025.8.3
⸻
Установка зависимостей из файла
pip install -r requirements.txt
⸻
Деактивация окружения
deactivate
⸻
Удаление окружения
Достаточно удалить каталог:
rm -rf .venv
или в Windows:
Remove-Item .venv -Recurse -Force
⸻
- Современный подход: uv
Что такое uv
uv — современный менеджер пакетов и окружений для Python, разработанный компанией Astral.
Преимущества:
- высокая скорость работы;
- замена pip, venv и pip-tools;
- автоматическое управление окружениями;
- поддержка lock-файлов;
- совместимость с PyPI.
⸻
Установка uv
Linux / macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Проверка установки:
uv --version
⸻
Создание нового проекта
uv init my_project
Структура:
my_project/
├── pyproject.toml
├── .python-version
└── README.md
⸻
Создание виртуального окружения
uv venv
Будет создан каталог:
.venv/
⸻
Активация окружения
Linux / macOS
source .venv/bin/activate
Windows PowerShell
.venv\Scripts\Activate.ps1
⸻
Установка пакетов
uv add requests
В результате:
- пакет устанавливается;
- обновляется pyproject.toml;
- создаётся uv.lock.
Пример:
[project]
dependencies = [
"requests>=2.32.4",
]
⸻
Установка зависимостей проекта
На новой машине:
uv sync
Команда:
- создаёт окружение;
- устанавливает зависимости;
- использует версии из uv.lock.
⸻
Удаление зависимости
uv remove requests
⸻
Запуск программы без активации окружения
uv run main.py
или
uv run python main.py
Пример:
uv run pytest
⸻
Обновление зависимостей
uv lock --upgrade
или
uv sync --upgrade
⸻
Сравнение venv и uv
Возможность venv + pip uv
Создание окружения Да Да
Установка пакетов pip uv
Lock-файл Нет Да
Работа через pyproject.toml Ограниченно Да
Высокая скорость Нет Да
Автоматическая синхронизация Нет Да
Запуск без активации Нет Да
⸻
Рекомендуемая практика
Для новых проектов:
uv init project
cd project
uv add requests
uv add pytest
uv run python main.py
Для поддержки старых проектов:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
⸻
Вывод
- venv + pip — классический стандарт, присутствует во всех установках Python.
- uv — современный инструмент для разработки, управления зависимостями и воспроизводимых сборок.
- Для новых проектов рекомендуется использовать uv.
- Для сопровождения существующих проектов необходимо знать оба подхода.