Флаг –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.