TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
айти канал

27 Mar 2024, 17:16

Открыть в Telegram Поделиться Пожаловаться

uv — очень быстрый pip на стероидах с большими абмициями

Пост будет особенно полезным, если раньше не сталкивались с pip-tools. В конце есть пример испольвания.

uv — это новый и полезный уже сейчас инструмент от компании Astral, которая раньше сделала Ruff. Долгосрочная цель авторов очень амбициозная -- сделать uv единым инструментом для работы с Python и заменить все отдельные инструменты: pip, pyenv, virtualenv, pip-tools, ruff, tox, pipx, и т.д. В итоге любой инженер, аналитик, исследователь или студент сможет легко и единообразно устанавливать Python окружения и разрабатывать Python проекты.

В своей первой итерации uv — это в ~2x-100x раз более быстрая замена трём инструментам:

(1) pip. То есть uv очень быстро устанавливает Python пакеты, что особенно актуально для сложных окружений и особенно когда они устанавливаются регулярно (например, в Continuous Integration). Но и в быту при установке условного Jupyter ускорение в 5-10 раз ощущается очень приятно.

(2) pip-tools. Напомню, что в проектах важно фиксировать не только прямые зависимости (скажем, Django==5.0.3), но и непрямые (те пакеты, которые Django приносит с собой). Это нужно, чтобы у всех пользователей и на всех машинах было идентичное окружение. pip-tools помогает решить ровно эту задачу: он автоматически генерирует и поддерживает в актуальном состоянии ваш requirements.txt файл с полным списком зависимостей. А uv делает то же самое, но гораздо быстрее.

(3) venv & virtualenv. На фоне предыдущих пунктов создание виртуальной среды это скорее мелочь, но даже эту мелочь uv делает ощутимо быстрее :)

Я использовал uv пару раз для простых личных сценариев. Софт свежий, и чтобы понять, подходит ли он вам, можно посмотреть текущие ограничения и баги. По моему опыту и инфополю думаю, что установка обычных пакетов на linux/macos машины уже нормально работает.

---------

После установки uv можно скопировать и запустить примеры ниже в таком же порядке (проверено на v0.1.24).

Создать и активировать среду:

mkdir hello-world && cd hello-world
uv venv


Не забыть активировать среду:

source .venv/bin/activate


Установить пакет:

uv pip install pandas


Составить полный список зависимостей requirements.txt по pyproject.toml:

echo '[project]
name = "hello-world"
dependencies = ["scikit-learn==1.4.1.post1", "Django==5.0.3"]
' > pyproject.toml

uv pip compile pyproject.toml -o requirements.txt


Привести окружение в соответствие с requirements.txt (важное отличие от uv pip install -r requirements.txt: sync не только установит все из requirements.txt, но и удалит то, чего там нет, например, ранее установленный pandas и его зависимости):

uv pip sync requirements.txt


@simple_it_channel #python

6.9k 2 169 1 22
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot