Глава 2 · Давайте установим Python!

pip, pipx, venv, virtualenv, uv

Пять похожих по звучанию инструментов — и очень разные задачи, которые каждый из них решает.

К этому моменту вы уже пользовались pip и venv (разделы 2.11–2.12). В экосистеме Python есть ещё несколько похожих по звучанию инструментов — разберём каждый отдельно, а не единым списком, чтобы не путать их друг с другом.

pip

pip устанавливает, обновляет и удаляет пакеты в уже существующее активное окружение. Он ничего не создаёт — только наполняет то, что уже есть.

Терминал
pip install requests
pip install requests==2.31.0
pip uninstall requests

venv

venv — модуль стандартной библиотеки (раздел 2.11), который делает ровно одну вещь: создаёт новое изолированное окружение. Он входит в сам Python — устанавливать его отдельно не нужно.

virtualenv

virtualenv — сторонний пакет, предшественник venv (модуль venv в стандартной библиотеке во многом вырос именно из него). Он решает ту же задачу, но исторически работает быстрее и поддерживает чуть больше сценариев (например, старые версии Python, где встроенного venv ещё не было). Для этого курса вам полностью хватит обычного venv — virtualenv стоит знать по имени, если встретите его в чужом проекте.

pipx

pipx решает другую задачу — не «пакет для моего проекта», а «программа с интерфейсом командной строки, которой я хочу пользоваться из любой папки». Пример: инструмент форматирования кода black — вы не импортируете его в свой код, вы запускаете его как команду. pipx автоматически создаёт для каждой такой программы своё отдельное окружение, но делает саму команду доступной глобально, из любой папки — без активации.

Терминал
pipx install black
black my_script.py

uv

uv (от компании Astral — они же делают Ruff, раздел 2.7) — относительно новый инструмент, который сам себя описывает как единую замену сразу для pip, pip-tools, pipx, poetry, pyenv, virtualenv и других. Его главное преимущество — скорость: uv в 10–100 раз быстрее pip на типичных операциях, потому что написан на Rust и агрессивно кеширует пакеты.

Терминал
uv venv
uv pip install requests
uv run my_script.py
Официальный источник
docs.astral.sh/uv — актуальная документация; на момент написания курса стабильная версия — 0.12.5.

Сравнение

ИнструментЧто делаетУстанавливает пакетыСоздаёт окружения
pipУстанавливает пакеты в текущее активное окружениеДаНет
venvСоздаёт изолированные окружения (входит в стандартную библиотеку)НетДа
virtualenvБолее старый и быстрый сторонний аналог venvНетДа
pipxУстанавливает CLI-приложения на Python глобально, каждое — в своё изолированное окружениеДа (для приложений)Да (по одному на приложение, автоматически)
uvОдин быстрый инструмент, заменяющий pip, venv, virtualenv, pipx и другиеДаДа
Нужен пакет дляпроекта?→ pip / uv pipНужно новоеокружение?→ venv / uv venvНужна CLI-программа?→ pipx / uv tool
Три частых вопроса и инструмент-ответ на каждый
Что использовать в этом курсе
Мы будем показывать примеры через pip и venv — это стандарт, который работает везде «из коробки» и на котором проще всего понять, что происходит на самом деле. Если позже вам понравится скорость uv — переключиться легко: команды почти зеркальные.