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 интерфейс командной строки, что упрощает переход без крутого обучения.
- Надежное управление зависимостями: обеспечивает точное разрешение зависимостей и поддержку файлов блокировки для воспроизводимых окружений.
- Автоматическое создание виртуальных окружений: создает и управляет виртуальными окружениями автоматически, снижая необходимость в ручной настройке.
- Поддержка нескольких платформ: работает на macOS, Linux и Windows.
- Установка в автономном режиме: может быть установлена без необходимости в Python или Rust, с использованием простого установщика или
curl
.
Все еще не уверены, почему использовать 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 на вашей системе, следуйте этим простым шагам:
Установка
- Автономный установщик (рекомендуется)
- 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 на разных операционных системах и в разных окружениях.