uv — новый менеджер пакетов, проектов и сред в Python

Преимущества Python uv

Содержимое страницы

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

uv разработан командой Astral, стоящей за популярным линтером Python Ruff. Инструмент призван решить типичные проблемы экосистемы Python — медленные установки, конфликты зависимостей и сложное управление окружениями — за счет использования производительности Rust и современной архитектуры программного обеспечения.

uv python ultra-violet spa

Ключевые возможности uv

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

uv vs poetry vs pdm vs pip performance comparison

Всё ещё сомневаетесь, почему стоит использовать 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 на вашей системе, следуйте этим простым шагам:

Установка

  1. Автономный установщик (рекомендуется)
    • 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.
  1. Альтернатива: установка через pip (если Python уже установлен)
pip install uv

Примечание: Этот метод менее рекомендуется для системного доступа, если вы не знаете, что делаете, так как он может захламить ваше системное окружение Python.

  1. Установка через 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:
    uv python install
    
    Эта команда загружает и устанавливает новейшую доступную стабильную версию Python.
  • Установка конкретной версии:
    uv python install 3.12
    
    Это установит последний патч-релиз Python 3.12 (например, 3.12.3).
  • Установка точной патч-версии:
    uv python install 3.12.3
    
    Это установит именно Python 3.12.3.
  • Установка нескольких версий:
    uv python install 3.9 3.10 3.11
    
    Это установит Python 3.9, 3.10 и 3.11.
  • Установка версии, соответствующей ограничению:
    uv python install '>=3.8,=3.11"
    
    Это изменит требование к версии Python в проекте.

Дополнительные замечания

Автоматические загрузки: По умолчанию 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 в разных операционных системах и средах.

Полезные ссылки

Подписаться

Получайте новые материалы про системы, инфраструктуру и AI engineering.