7.5Kпросмотров
27 марта 2024 г.
Score: 8.2K
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