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 интерфейс командной строки, что упрощает переход без крутого обучения.
  • Надежное управление зависимостями: обеспечивает точное разрешение зависимостей и поддержку файлов блокировки для воспроизводимых окружений.
  • Автоматическое создание виртуальных окружений: создает и управляет виртуальными окружениями автоматически, снижая необходимость в ручной настройке.
  • Поддержка нескольких платформ: работает на 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

Это создает каталог проекта, настраивает виртуальное окружение, устанавливает зависимости и запускает скрипты в изолированной среде.

  • Управление скриптами с встроенными зависимостями:
uv add --script script.py requests
uv run script.py

uv может управлять зависимостями для однофайловых скриптов без отдельных файлов требований.

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

Особенность uv pip/virtualenv Poetry
Скорость Очень высокая Медленная Умеренная
Виртуальные окружения Автоматические Ручные Автоматические
Разрешение зависимостей Продвинутое Базовое Продвинутое
Управление версиями Python Да Нет (требуется pyenv) Нет
Поддержка файлов блокировки Да Нет (требуется 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 на разных операционных системах и в разных окружениях.

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