n1ro°
RU

Компьютеры · Инструкция

uv pip sync или install в чем разница

`uv pip install` добавляет или обновляет пакеты в окружении; `uv pip sync` приводит окружение к целевому набору требований и удаляет лишнее. Поэтому для CI и проверки воспроизводимости обычно важна именно семантика sync, а для локального точечного эксперимента — install.

Редакция N1RO · Проверено

Короткий ответ

`uv pip install` добавляет пакеты в окружение, а `uv pip sync` приводит среду к заданному набору требований и может удалить лишние пакеты.

Что меняют uv pip sync и uv pip install

`uv pip sync` принимает requirements/pylock и другие поддерживаемые источники требований и стремится синхронизировать итоговый состав среды. `uv pip install` удобнее для точечного добавления пакета и не является механизмом удаления всего, чего нет в целевом наборе. В CI строгая синхронизация помогает обнаружить незадекларированную зависимость, которую случайно мог скрывать старый пакет в окружении.

Совет: Перед `sync` всегда перепроверяйте активное окружение — удаление лишнего является штатным поведением.

Как выполнить задачу и не сломать requirements.txt

  1. Шаг 1: Подготовьте фиксированный файл требований или lock-источник, который должен быть источником истины.
  2. Шаг 2: Убедитесь, что активировано правильное виртуальное окружение проекта, а не общий системный Python.
  3. Шаг 3: Для чистого CI выполните `uv pip sync <файл>`; для разового локального добавления используйте `uv pip install <package>`.
  4. Шаг 4: После изменения выполните `uv pip check`, тесты и сборку приложения.

Чек-лист: uv pip sync и install: в чём разница

  • Выбран правильный `.venv` или другое целевое окружение.
  • Источник требований/lock-файл актуален и сохранён в репозитории.
  • `sync` используется там, где нужен точный состав, а `install` — для осознанного добавления пакета.
  • После sync нет ручных пакетов, на которые незаметно опираются тесты.
  • Чистый CI проходит без дополнительных установок вне описанного набора требований.

Почему `sync` обнаруживает скрытые локальные зависимости

Давно живущее виртуальное окружение часто содержит пакеты, которых уже нет в requirements или lock-файле. Обычный install может оставить их на месте, и тесты продолжат проходить случайно. `uv pip sync` полезен тем, что выравнивает среду по выбранному источнику требований и тем самым выявляет незадекларированные импорты. Перед запуском убедитесь, что активировано нужное окружение: удаление лишних пакетов — часть ожидаемого поведения. После sync запускайте тесты без дополнительного ручного install, иначе вы снова потеряете проверку точного состава среды.

Почему sync может удалить лишние пакеты

Перед `uv pip sync` всегда проверяйте активное окружение: команда предназначена для удаления пакетов, не входящих в целевой набор.

Как проверить синхронизацию окружения

Разница проверена правильно, если среду можно удалить, создать заново и получить тот же рабочий набор через `uv pip sync`. Если после очистки тест падает из-за отсутствующего модуля, это полезный сигнал: зависимость нужно задекларировать, а не возвращать локальным `install`, который снова скроет проблему.

Важно: Чистый CI — лучший контроль того, что среда действительно описана полностью.

Что учитывать

Давно живущее виртуальное окружение часто содержит пакеты, которых уже нет в requirements или lock-файле. Обычный install может оставить их на месте, и тесты продолжат проходить случайно. `uv pip sync` полезен тем, что выравнивает среду по выбранному источнику требований и тем самым выявляет незадекларированные импорты. Перед запуском убедитесь, что активировано нужное окружение: удаление лишних пакетов — часть ожидаемого поведения. После sync запускайте тесты без дополнительного ручного…

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. uv command reference). Пример и формулировки — редакция N1RO на 2026-09-23.