Перейти к основному содержимому
Инструменты Python2026-07-31 · 9 мин чтения

Виртуальные среды Python в 2026 году: venv, uv, pipx, поэзия — когда что использовать

В каждом учебнике по Python говорится «используйте виртуальную среду» и идете дальше. Этот делает все возможное: что такое венв на самом деле, четыре инструмента, которые стоит знать в 2026 году, 60-секундное дерево принятия решений для выбора правильного и две ошибки, которые сломают вашу настройку в течение недели.

Что такое виртуальная среда на самом деле

venv — это каталог, содержащий символическую ссылку интерпретатора Python и частный файл `site-packages/`. Когда он «активирован», PATH добавляет <venv>/bin, поэтому python и pip в вашей оболочке указывают на копии venv. pip install X записывает в site-packages/ venv, а не в системный Python.

Вот и все. Никакой магии. Это папка с символической ссылкой и файлом pyvenv.cfg.

BASH
$ python -m venv .venv $ ls .venv/ bin/ include/ lib/ pyvenv.cfg $ cat .venv/pyvenv.cfg home = /opt/homebrew/opt/python@3.13/bin include-system-site-packages = false version = 3.13.2

Все остальное (активация скриптов, оберток, менеджеров пакетов) — это удобство поверх этой формы.

Зачем он вам нужен всегда

Без venv pip install X записывает в site-packages/ вашей системы Python. Три проблемы:

1. Конфликты. Проекту A требуется django==4.2; Проекту B нужен django==5.1. Без венвса невозможно.

2. Воспроизводимость. «Работает на моей машине» — это системная проблема Python. Снимок venv — это среда.

3. Очистка. Удалить проект? Удалите папку venv. Установки System-Python накапливаются навсегда.

В macOS 12+ и большинстве дистрибутивов Linux system-Python теперь принадлежит ОС — pip может даже отказаться от установки без --break-system-packages. Это подсказка.

4 инструмента, которые стоит знать

1. venv — базовая версия stdlib

Поставляется с каждой установкой Python 3.3+. Ноль зависимостей. Универсальный запасной вариант:

BASH
python -m venv .venv # create source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt deactivate # or close the shell

Используйте, когда: пишете руководство, гарантируете, что скрипт работает везде, или в заблокированной CI, где вы не можете ничего установить.

2. uv — современное значение по умолчанию (2026 г.)

Написан на Rust, в 10-100 раз быстрее, чем pip. Заменяет venv + pip + pip-tools + pyenv-download-python. Полный обзор смотрите в нашем uv-dive.

BASH
uv venv # create venv (uses current Python) uv venv --python 3.13 # or download + pin a version uv pip install -r requirements.txt uv run pytest # run without activating uv add fastapi # append to pyproject.toml + install uv sync # install exactly what pyproject.toml says

Используйте, когда: любой проект 2026 года — индивидуальный, командный, CI, Docker. Разница в скорости в холодном кеше реальна (45 секунд в точках → 2 секунды в типичном проекте Django).

3. pipx — для инструментов CLI

Когда вы устанавливаете CLI, такой как ruff, httpie, black, youtube-dl, mypy, вы не хотите, чтобы он был в вашем проекте venv (зачем зависеть от ruff для работы import project.things?). И вы не хотите этого в системе Python (конфликты). pipx помещает каждого в отдельный изолированный венв, но предоставляет CLI глобально:

BASH
pipx install ruff pipx install httpie pipx install black ruff check . # works from anywhere, no activation httpie GET api.github.com black .

Используйте при: установке CLI на основе Python. Эмпирическое правило: pipx install X, если X предоставляет исполняемый файл, который вы могли бы запустить из любого проекта; uv pip install X, если X — это библиотека, которую вы импортируете.

Современная замена: uvtool install ruff делает то же самое без отдельной установки pipx. Выбирайте любой.

4. poetry — зрелый шкафчик зависимостей (снижающаяся доля)

До того, как появился ультрафиолет, «поэзия» была популярным современным упаковочным инструментом. Отличный преобразователь зависимостей, детерминированный poetry.lock, тесная интеграция с pyproject.toml. Все еще прочный, но медленнее, чем ультрафиолетовый, и добавляет когнитивные нагрузки.

BASH
poetry new my-project poetry add fastapi poetry install poetry run pytest poetry publish

Используйте, когда: существующий проект уже использует поэзию или вам нужны плагины, специфичные для поэзии (например, poetry-plugin-export). Что касается НОВЫХ проектов в 2026 году, «uv» поможет вам быстрее и с меньшими затратами.

Дерево решений за 60 секунд

▶ PYTHONeditable · runs in your browser

Вот и все. 90% разработчиков Python сегодня могут выбирать из этого списка, даже не нуждаясь в pyenv, virtualenvwrapper, pew или conda.

Конда — особый случай

conda — это отдельная вселенная: менеджер пакетов + менеджер venv + дистрибьютор Python + менеджер C-библиотек, в первую очередь для научного Python. Если вы выполняете тяжелую числовую работу со стеками numpy/scipy/pandas/GPU, которым нужны совпадающие версии CUDA + cuDNN, miniconda все равно может стоить того — предварительно скомпилированные двоичные файлы экономят часы по сравнению с pip.

В противном случае: обычный uv теперь конкурентоспособен и в научных стеках (установки numpy / pandas занимают секунды, а не минуты). Не обращайтесь к conda, если вам конкретно не нужен связывающий пункт C-библиотеки, который невозможно легко создать.

Две ошибки, которые сломают вашу настройку за неделю

1. Коммит .venv/ в git

Венв содержит:

— Абсолютные пути к вашей конкретной установке Python.

— Скомпилированные файлы .pyc.

  • Двоичные файлы, специфичные для ОС.

Зафиксируйте это → ваш товарищ по команде в Windows не сможет ничего запустить. Добавьте .venv/ (и venv/, .env/) к вашему .gitignore СНАЧАЛА, затем создайте файл venv.

2. Активация не в той оболочке

source .venv/bin/activate устанавливает переменные env только в ТЕКУЩЕЙ оболочке. Если вы откроете новую вкладку терминала, вы вернетесь к системному Python. Два безопасных шаблона:

1. Повторно активируйте каждый сеанс — стандартный процесс.

2. `uv run`/`poetry run`/`python -m project` — вообще никогда не активировать. Запускайте команды из новой оболочки с префиксом этого инструмента. Отлично работает с Makefiles, CI, npm-скриптами, git-хуками.

Правило для скриптов: если это однострочный запуск из CI или Makefile, НЕ активируйте — используйте uv run pytest или полный путь .venv/bin/pytest. Активация предназначена только для интерактивных оболочек.

Миграция между инструментами

пип + венв → уф:

BASH
rm -rf .venv uv venv uv pip install -r requirements.txt

Требование.txt продолжает работать дословно. Две минуты.

поэзия → уф:

BASH
uvx migrate-to-uv # community tool, converts pyproject.toml

venv → стихи:

BASH
poetry init poetry add $(pip freeze | cut -d= -f1)

Проверка

После установки всегда проверяйте, КАКОЙ Python + pip вы используете:

BASH
$ which python /path/to/project/.venv/bin/python # ✅ venv /opt/homebrew/bin/python # ❌ system, activation didn't take $ which pip /path/to/project/.venv/bin/pip # ✅ venv $ python -c "import sys; print(sys.prefix)" /path/to/project/.venv # ✅ venv

Если какой питон показывает системный путь после активации, что-то не так — обычно вы активировали в подоболочке, которая уже вышла.


Виртуальные среды — одна из немногих тем Python, современный ответ (2026 г.) действительно проще, чем исторический. uv для новых проектов, venv для скриптов, pipx для CLI. Сделанный.

Следующий шаг: Python DevOps track охватывает uv + ruff + Docker + современный стек развертывания Python — практический опыт работы с реальным Python, работающим в вашем браузере.

Готовы попробовать?

15 уроки бесплатно после бесплатной регистрации — без карты. Попробуйте платформу, а затем принимайте решение.

Начни бесплатно →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.