Добавить в корзинуПозвонить
Найти в Дзене

«UV» — новый взгляд на управление Python-зависимостями

В экосистеме Python не так уж мало инструментария для работы с виртуальными окружениями и зависимостями. Мы все знакомы с классической комбинацией virtualenv + pip, с более «гламурными» менеджерами вроде Poetry и даже с heavy-duty решениями, интегрирующимися в CI/CD. Однако в своём посте «Uv has a killer feature you should know about» автор Лукас Валатка (Lukas Valatka) рассказывает о небольшой, но действительно впечатляющей фиче uv: создавать временные окружения «на лету» всего одной командой. Когда мы говорим об «ад-хок» скриптах, то обычно предполагаем: Результат: куча мелких действий, которые не хочется повторять на автомате, особенно если задача «одноразовая». Вместо того, чтобы: pyenv install 3.12
pyenv local 3.12
python -m venv .venv
source .venv/bin/activate
pip install pandas
python …мы можем вызвать: uv run --python 3.12 --with pandas python и сразу начать работать в нужном окружении! Причём: По опыту в больших проектах многие уже давно перешли на Poetry или аналогичные инстр
Оглавление

В экосистеме Python не так уж мало инструментария для работы с виртуальными окружениями и зависимостями. Мы все знакомы с классической комбинацией virtualenv + pip, с более «гламурными» менеджерами вроде Poetry и даже с heavy-duty решениями, интегрирующимися в CI/CD. Однако в своём посте «Uv has a killer feature you should know about» автор Лукас Валатка (Lukas Valatka) рассказывает о небольшой, но действительно впечатляющей фиче uv: создавать временные окружения «на лету» всего одной командой.

Почему это важно?

Когда мы говорим об «ад-хок» скриптах, то обычно предполагаем:

  • 🤔 Быструю идею: «Я хочу за 5 минут проверить гипотезу в Python, возможно, с Pandas или другим пакетом».
  • 🏗️ Подготовительные ритуалы: установка нужной версии Python, создание папки, инициализация виртуального окружения, активация, установка зависимостей — и это ещё не считая, что иногда нужна pyenv для конкретной версии интерпретатора.

Результат: куча мелких действий, которые не хочется повторять на автомате, особенно если задача «одноразовая».

«Killer feature - ключевая фишка» в действии

Вместо того, чтобы:

pyenv install 3.12
pyenv local 3.12
python -m venv .venv
source .venv/bin/activate
pip install pandas
python

…мы можем вызвать:

uv run --python 3.12 --with pandas python

и сразу начать работать в нужном окружении! Причём:

  • 🛠️ Никаких «следов» после: uv не «засоряет» систему, не требует от вас вручную удалять .venv или что-то ещё.
  • 🔥 Быстро и удобно: особенно если вы экспериментируете с несколькими версиями Python.

Личный взгляд и технические детали

По опыту в больших проектах многие уже давно перешли на Poetry или аналогичные инструменты. Но uv выгодно выделяется:

  • 🚀 Скоростью: если попробовать Poetry после uv, внезапно может показаться, что оно «подтормаживает» с установкой пакетов.
  • 📜 Соответствием PEP: автор uv старается аккуратно следовать стандартам, что повышает уверенность в надёжности и совместимости.
  • ⚙️ Удобным CLI: ключевые параметры (--python 3.12, --with pandas) легко запомнить и использовать как «шпаргалку» в терминале.

Условно говоря, для долгосрочных проектов, возможно, останутся более знакомые инструменты, но когда нужен тестовый «костыль» для проверки идеи (новый pandas, обкатка фичи в NumPy), uv выглядит как гибрид между pyenv + venv + pip, только всё в одном месте и буквально одним кликом.

Почему «ad-hoc окружения» важны

  • 🧪 Научный / Data Science подход: часто учёные и ML-инженеры экспериментируют с разными версиями библиотек (pandas, scikit-learn). Для них возможность мгновенно переключаться и проверять гипотезы — золотое дно.
  • 🔐 Безопасность: не хочется загрязнять глобальную среду Python, где установлены базовые пакеты. Если что-то пойдёт не так — потом долго править конфликтующие зависимости.
  • 💡 Обратная связь: быстрее зайти в REPL, что-то попробовать — и закрыть сессию, когда она больше не нужна.

Есть ли минусы?

Безусловно, у каждого инструмента есть ограничения. Например, если ваш проект суперсложный, со множеством пакетов в lock-файле, вам может потребоваться более детализированная система управления зависимостями (с жёсткой фиксацией версий). Однако для «прототипов» и локальных тестов uv ведёт себя идеально.

Итоги

uv — это пример того, как маленькая деталь (запуск ad-hoc окружения в одну строчку) может кардинально изменить привычный рабочий процесс Python-разработчика. В совокупности с быстрым движком и ориентацией на соответствие PEP, оно действительно может стать «go-to tool - основной инструмент» для тех, кто устал от тяжеловесных сценариев установки и удаления окружений.

Ссылки

Надеюсь, этот обзор добавил немного энтузиазма к вашему Python-арсеналу. Попробуйте uv — возможно, после него вы будете смотреть на сложные виртуальные окружения с лёгким недоумением: «А зачем так усложнять?»