Файл 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-файл с разрешенными транзитивными версиями, используйте инструмент, который создает и проверяет такой файл явно.