Компьютеры · Инструкция
uv pip sync или install в чем разница
`uv pip install` добавляет или обновляет пакеты в окружении; `uv pip sync` приводит окружение к целевому набору требований и удаляет лишнее. Поэтому для CI и проверки воспроизводимости обычно важна именно семантика sync, а для локального точечного эксперимента — install.
Короткий ответ
`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: Подготовьте фиксированный файл требований или lock-источник, который должен быть источником истины.
- Шаг 2: Убедитесь, что активировано правильное виртуальное окружение проекта, а не общий системный Python.
- Шаг 3: Для чистого CI выполните `uv pip sync <файл>`; для разового локального добавления используйте `uv pip install <package>`.
- Шаг 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.