uv — новый менеджер пакетов, проектов и сред в Python
Преимущества Python uv
Python uv (произносится как «ю-ви») — это современный высокопроизводительный менеджер пакетов и проектов Python, написанный на Rust. Он разработан как полная замена традиционным инструментам управления пакетами Python, таким как pip, pip-tools, virtualenv, pipx и pyenv, с целью упрощения и ускорения рабочих процессов разработки Python.
uv разработан командой Astral, стоящей за популярным линтером Python Ruff. Инструмент призван решить типичные проблемы экосистемы Python — медленные установки, конфликты зависимостей и сложное управление окружениями — за счет использования производительности Rust и современной архитектуры программного обеспечения.

Ключевые возможности uv
- Исключительная скорость: uv значительно быстрее традиционных инструментов — как правило, в 8–10 раз быстрее
pipбез кеширования и до 80–115 раз быстрее при теплом кеше. - Всё в одном инструменте: Сочетает установку пакетов, разрешение зависимостей, управление виртуальными окружениями, управление версиями Python, создание каркасов проектов и выполнение скриптов в одном инструменте.
- Совместимость: Предлагает командную строку, совместимую с
pip, что позволяет легко перейти на uv без крутой кривой обучения. - Надёжное управление зависимостями: Обеспечивает точное разрешение зависимостей и поддержку файлов блокировки (lockfile) для воспроизводимых окружений.
- Автоматические виртуальные окружения: Автоматически создаёт и управляет виртуальными окружениями, сокращая ручную настройку.
- Кроссплатформенная поддержка: Работает на macOS, Linux и Windows.
- Автономная установка: Можно установить без необходимости наличия Python или Rust, используя простой установщик или
curl.

Всё ещё сомневаетесь, почему стоит использовать uv?
- Производительность: Кардинально сокращает время установки пакетов и разрешения зависимостей.
- Простота: Объединяет несколько инструментов в один, упрощая настройку и управление проектами.
- Надёжность: Обеспечивает стабильные и воспроизводимые окружения с понятными сообщениями об ошибках и разрешением конфликтов.
- Современные стандарты: Поддерживает
pyproject.tomlдля настройки проекта, соответствуя современным стандартам упаковки Python.
Примеры использования
Попробуем кое-что захватывающее!
- Начало нового проекта:
uv init myproject
cd myproject
uv add requests
uv run python script.py
Это создаёт директорию проекта, настраивает виртуальное окружение, устанавливает зависимости и запускает скрипты в изолированной среде.
- Управление скриптами с inline-зависимостями:
uv add --script script.py requests
uv run script.py
uv может управлять зависимостями для однофайловых скриптов без отдельных файлов требований.
Сравнение с традиционными инструментами
| Функция | uv | pip/virtualenv | Poetry |
|---|---|---|---|
| Скорость | Очень быстрая | Медленная | Умеренная |
| Виртуальные окружения | Автоматические | Ручные | Автоматические |
| Разрешение зависимостей | Продвинутое | Базовое | Продвинутое |
| Управление версиями Python | Да | Нет (нужен pyenv) | Нет |
| Поддержка lockfile | Да | Нет (нужен pip-tools) | Да |
| Выполнение скриптов | Интегрировано | Нет | Ограниченно |
Как установить и начать использовать UV на своей системе
Чтобы установить и начать использовать uv на вашей системе, следуйте этим простым шагам:
Установка
- Автономный установщик (рекомендуется)
- Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh
Или, если вы предпочитаете wget:
wget -qO- https://astral.sh/uv/install.sh | sh
- Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- Конкретная версия: Вы можете запросить конкретную версию, указав её в URL, например,
https://astral.sh/uv/0.7.15/install.sh.
- Альтернатива: установка через pip (если Python уже установлен)
pip install uv
Примечание: Этот метод менее рекомендуется для системного доступа, если вы не знаете, что делаете, так как он может захламить ваше системное окружение Python.
- Установка через pipx (для изолированной установки для пользователя)
pipx install uv
Этот метод чище для глобального доступа, если вы уже используете pipx.
Начало работы
Чтобы проверить установку — выполните:
uv
Вы должны увидеть меню справки, подтверждающее, что uv установлен и готов к работе.
Для создания и активации виртуального окружения
- Создание venv:
uv venv test
- Активация на Linux/macOS:
source test/bin/activate
- Активация на Windows:
.\test\Scripts\activate
Теперь вы можете использовать uv pip install для установки пакетов в этом окружении.
Инициализация нового проекта
uv init
Это создаёт pyproject.toml и .gitignore для вашего проекта.
Добавление зависимостей
Добавление пакета:
uv add
Это обновляет pyproject.toml и генерирует/обновляет файл блокировки.
Синхронизация зависимостей
Установка всех зависимостей в вашем окружении:
uv sync
Или использование интерфейса, совместимого с pip:
uv pip install
Это гарантирует, что все зависимости установлены в соответствии с вашим файлом блокировки.
Выполнение скриптов
Используйте:
uv run script.py
Это автоматически управляет окружением и зависимостями для вашего скрипта.
Интеграция с оболочкой (опционально)
Для более плавного рабочего процесса вы можете добавить интеграцию с оболочкой в ваш .zshrc или .bashrc, чтобы автоматически активировать виртуальное окружение по умолчанию и привязать pip к uv pip.
Следуя этим шагам, вы установите uv и будете готовы управлять своими проектами Python с высокой скоростью и лёгкостью.
Установка конкретных версий Python
Вы можете использовать uv для установки конкретных версий Python и управления ими в ваших проектах.
- Установка последней стабильной версии Python:
Эта команда загружает и устанавливает новейшую доступную стабильную версию Python.uv python install - Установка конкретной версии:
Это установит последний патч-релиз Python 3.12 (например, 3.12.3).uv python install 3.12 - Установка точной патч-версии:
Это установит именно Python 3.12.3.uv python install 3.12.3 - Установка нескольких версий:
Это установит Python 3.9, 3.10 и 3.11.uv python install 3.9 3.10 3.11 - Установка версии, соответствующей ограничению:
Это изменит требование к версии Python в проекте.uv python install '>=3.8,=3.11"
Дополнительные замечания
Автоматические загрузки: По умолчанию uv автоматически загружает и устанавливает необходимые версии Python, если они не найдены на вашей системе.
Системный Python: uv может использовать существующие установки Python, если они присутствуют, или вы можете принудительно заставить его использовать системный Python с помощью флага --no-managed-python.
Обновление: Вы можете обновить версии Python, управляемые uv, до последнего патч-релиза:
uv python upgrade 3.12
Или обновить все установленные версии:
uv python upgrade
Обновление через минорные версии (например, с 3.12 на 3.13) не поддерживается.
В заключение, uv предоставляет гибкие и мощные инструменты для установки, управления и использования конкретных версий Python в ваших проектах.
Как UV обнаруживает доступные интерпретаторы Python на разных системах
UV обнаруживает доступные интерпретаторы Python на разных системах, проверяя набор определённых мест и запрашивая у каждого кандидата метаданные о его версии. Вот как это работает:
- Управляемые установки Python:
Сначала UV ищет в каталоге, указанном переменной окруженияUV_PYTHON_INSTALL_DIR, где хранятся собственные управляемые версии Python. - Системный PATH:
На macOS и Linux UV проверяет исполняемые файлы с названиямиpython,python3илиpython3.x(гдеx— номер версии) в каталогах, указанных в системномPATH. На Windows он ищетpython.exe. - Специфичные для Windows места:
На Windows UV также проверяет реестр Windows и интерпретаторы Python из Microsoft Store, используя вывод командыpy --list-paths. - Виртуальные окружения:
Если виртуальное окружение активно или указано, UV проверяет совместимость интерпретатора в этом окружении перед поиском в других местах. - Запрос метаданных:
Для каждого обнаруженного исполняемого файла запрашиваются его метаданные о версии. Рассматриваются только исполняемые файлы, соответствующие запрошенной версии (или ограничению версии). Неисполняемые файлы игнорируются. - Приоритет и запасной вариант:
По умолчанию UV отдает предпочтение системным установкам Python, но вы можете изменить это с помощью опций, чтобы предпочитать управляемые версии или использовать только управляемые/системные версии. Если подходящий интерпретатор не найден, UV может скачать и установить нужную версию.
Этот надёжный процесс обнаружения гарантирует, что UV сможет стабильно находить и использовать правильный интерпретатор Python в разных операционных системах и средах.
Полезные ссылки
- Домашняя страница uv: https://docs.astral.sh/uv/
- Пакет uv: https://pypi.org/project/uv/
- GitHub uv: https://github.com/astral-sh/uv/
- Шпаргалка по Python
- Шпаргалка по Conda
- Шпаргалка по venv
- Шпаргалка по Bash
- Шпаргалка по venv
- Популярность языков программирования и фреймворков
- Хаб инструментов разработчика — шпаргалки, CLI-инструменты и рабочие процессы разработки