Перейти к содержанию

UV - пакетный менеджер Python

Что такое UV?

UV (сайт) — это чрезвычайно быстрый пакетный менеджер Python, написанный на Rust. Разработан как замена для pip и pip-tools. Помимо этого он может собой заменить venv и pyenv. Но обо всем по порядку.

UV (или Universal Virtualenv) — это пакетный менеджер для Python, который был разработан для улучшения управления окружениями и пакетами в Python. Хотя проект не так широко известен, как pip или conda, он предполагает несколько основных функций и преимуществ:

Основные особенности UV

  1. Управление виртуальными окружениями: UV позволяет пользователям легко создавать и управлять изолированными окружениями, что помогает избежать конфликтов между зависимостями разных проектов.

  2. Простота использования: Предоставляет интуитивно понятный интерфейс командной строки, который позволяет пользователям быстро устанавливать и обновлять пакеты.

  3. Совместимость с pip: UV совместим с pip, что позволяет устанавливать пакеты из PyPI и использовать все преимущества существующих библиотек Python.

  4. Кроссплатформенность: Работает на различных операционных системах, таких как Windows, macOS и Linux.

  5. Управление пакетами: Включает возможность установки, обновления и удаления пакетов с легким доступом к их зависимостям.

Установка UV

curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
curl -LsSf https://astral.sh/uv/0.2.23/install.sh | sh
powershell -c "irm https://astral.sh/uv/0.2.23/install.ps1 | iex"
pip install uv
pipx install uv
brew install uv

Как пользоваться

  • Создание нового виртуального окружения:

    uv create myenv
    uv myenv
    

  • Активация окружения:

    uv activate myenv
    # On macOS and Linux.
    source .venv/bin/activate
    # On Windows.
    .venv\Scripts\activate
    

  • Установка пакета:

    uv install package_name
    

  • Установка библиотек:

Ставим flask

  uv pip install flask

Установка из requirements.txt

 uv pip install -r requirements.txt 

  • Фиксация зависимостей:
      uv pip freeze | uv pip compile - -o requirements.txt
    

Что еще умеет UV?

Первое — это работа с виртуальным окружением

Второе, но не по значению — это управления версиями Python. Есть проект pyenv и думаю тут UV сможет его потеснить. Если кратко, то pyenv — это система управления версиями Python на вашем компьютере. Скажем, стоит у Вас Python 3.10, а Вы хотите поставить 3.8. У Вас два варианта — или скачать с официального сайта и скомпилировать, или поставить pyenv и уже с его помощью поставить интерпретатор нужной версии и создавать от него окружения.

А тут все в одном инструменте!

1) Ставим нужную версию Python

uv python install 3.12

2) Проверяем что все установилось

uv python list

3) Создаем окружение с новой версией

uv venv -p /home/timur/.local/share/uv/python/cpython-3.12.3-linux-x86_64-gnu/bin/python3 venv2
source venv2/bin/activate

Теперь у нас новый Python и новое окружение к нему.

Помимо этого можно ставить утилиты через uv tool.

Так же есть возможность управлять кэшем пакетов через uv cache.


В итоге:

Плюсы:

  • Самый огромный плюс — это скорость.
  • Синтаксис. Если умеете работать с pip, то большинство команд будут вам знакомы.
  • Работа с виртуальным окружением — пушка!
  • Работа с версиями Python — просто бомба!

Минусы тоже есть:

  • Платформозависимые lockfile.
  • Нет фиксации контрольной суммы зависимой библиотеки как в том же poetry.
  • Пока не получится посмотреть дерево зависимостей как в poetry.

UV — это интересный пакетный менеджер, может быть полезным инструментом для разработчиков Python, которым нужно быстро управлять окружениями и пакетами. Несмотря на то, что более известные менеджеры, такие как pip и conda, могут предлагать больше функций и интеграций, UV дает возможность упростить процесс разработки и тестирования в различных окружениях. Управление виртуальным окружением и управление версиями Python делают UV инструментом 3 в 1, что только добавляет ему привлекательности.