2025, Oct 16 21:16

Временная установка пакетов в uv без изменения pyproject: uv pip install

Нужно быстро попробовать пакет без правки pyproject.toml и uv.lock? Пользуйтесь uv pip install: временная установка в активный venv без сохранения зависимостей.

Пробовать Python‑пакет «просто ради проверки» не должно вынуждать вас заносить его в метаданные проекта. Если вы пришли из мира npm, вы, вероятно, ищете аналог npm install --no-save в uv. У команды uv add такого флага нет, но в uv всё же есть аккуратный способ поставить пакет временно, не трогая ни pyproject.toml, ни lockfile.

Проблема

Вы хотите локально поставить пакет в проект для быстрого эксперимента, но не сохранять его в pyproject.toml и файл блокировки. В npm для этого есть npm install package-name --no-save. В uv вы интуитивно потянетесь к uv add в надежде на похожий переключатель, однако у uv add нет опции --no-save.

Пример интуитивного, но не того, что вам нужно, подхода:

uv add trial-lib

Эта команда как раз и предназначена для фиксации зависимостей; обходного переключателя, чтобы не сохранять, у неё нет.

Что происходит на самом деле

uv add существует для управления зависимостями в конфигурации проекта и в lockfile. Документированного флага, позволяющего добавить пакет без сохранения, нет. Если вам нужна лишь временная установка, которая не меняет pyproject.toml и uv.lock, нужен другой вход — тот, что ведёт себя как pip.

Решение

Воспользуйтесь интерфейсом uv, совместимым с pip: он ставит пакет в текущую среду, не обновляя файлы зависимостей проекта:

uv pip install temp-dep

«Это низкоуровневый интерфейс, максимально близко имитирующий поведение pip.»

Если хотите поставить пакет именно в виртуальную среду проекта, которую ведёт uv, перед установкой активируйте её. Иначе пакет окажется в той среде, которая сейчас активна в вашей оболочке.

source .venv/bin/activate
uv pip install temp-dep

Эта последовательность установит temp-dep в активный venv и при этом не изменит pyproject.toml и uv.lock.

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

Временные установки полезны, когда вы хотите просто попробовать инструмент или библиотеку, не связывая ими проект. Например, можно накинуть что-то вроде ruff в текущий venv, поэкспериментировать с новыми опциями или правилами и спокойно двигаться дальше, не засоряя метаданные проекта. Если позже решите, что пакет должен войти в проект, вернитесь к uv add и зафиксируйте его как следует. А если забудете добавить зависимость, от которой действительно зависит код, запуск CI, опирающийся на lockfile, выявит расхождение — сборка упадёт из‑за отсутствующего пакета.

Выводы

Когда нужна установка без сохранения в uv, используйте uv pip install. Вы получаете быстрый, одноразовый рабочий процесс, привычный по pip, а pyproject.toml и uv.lock остаются без изменений. Хотите поставить пакет в конкретный venv — сначала активируйте именно эту среду, а к uv add переходите лишь тогда, когда готовы закрепить зависимость. Если хочется изолировать эксперименты ещё сильнее, проводите их в отдельной ветке или во временной виртуальной среде и потом просто удаляйте.

Статья основана на вопросе с StackOverflow от Rinato Fenice и ответе от STerliakov.