Файл requirements.txt передает pip список того, что нужно установить. Он полезен для приложения, учебного проекта или развертывания, но результат зависит от того, какие ограничения вы в него записали.
Минимальный файл
requests==2.32.5
Django>=5.2,<5.3
Точная версия дает повторяемый результат для прямой зависимости. Диапазон разрешает совместимые обновления, но новая установка через месяц может отличаться. pip поддерживает также URL, локальные пути, дополнительные индексы и ссылки на другие requirements-файлы. Синтаксис описан в документации pip.
Почему pip freeze требует чистого окружения
python -m pip freeze > requirements.txt
Команда записывает установленные дистрибутивы, включая транзитивные зависимости. Если окружение использовалось для нескольких задач, в файл попадет лишнее. Сначала создайте новый venv, установите проект и только потом фиксируйте состояние.
Проверка с нуля
python -m venv .venv-test
.venv-test/bin/python -m pip install -r requirements.txt
.venv-test/bin/python -m pip check
Последняя команда проверит совместимость уже установленных пакетов. Она не заменяет запуск тестов приложения.
Когда нужен другой формат
У библиотеки зависимости обычно объявляют диапазонами в pyproject.toml. Жестко зафиксированный requirements-файл больше подходит окружению приложения. Если нужен lock-файл с разрешенными транзитивными версиями, используйте инструмент, который создает и проверяет такой файл явно.