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.