Флаг –dry-run заставляет pip разрешить зависимости и показать предполагаемые действия без установки файлов. Параметр –report сохраняет результат в JSON. Это удобная разведка перед обновлением.

Постройте чистый план

Добавьте –ignore-installed, если хотите узнать результат для пустого окружения, а не получить план с поправкой на уже находящиеся в venv пакеты.

python -m pip install --dry-run --ignore-installed --report plan.json -r requirements.txt

Что находится в отчете

JSON содержит выбранные дистрибутивы, версии, метаданные и сведения о загрузке, поэтому файл можно сравнить между ветками или проверить автоматическим скриптом до настоящей установки.

Чего dry-run не проверяет

Режим не запускает ваше приложение и не доказывает совместимость поведения библиотек, а сборка исходного дистрибутива на целевой машине все равно способна дать отдельную ошибку.

Сохраняйте plan.json как диагностический артефакт CI, но не считайте его lock-файлом: повторный resolver позднее может увидеть новые совместимые релизы.

Для защиты уже выбранных файлов добавьте режим –require-hashes. Формат отчета связан с официальной командой pip install.