requirements.txt
- requirements.txt
- файл со списком python зависимостей проекта.
Позволяет хранить и воспроизводить одинаковое окружение на разных машинах.
Зачем нужен requirements.txt
Без requirements.txt:
- сложно понять какие библиотеки использует проект
- невозможно быстро развернуть окружение
- разные разработчики используют разные версии пакетов
- CI/CD может работать иначе чем локальная машина
requirements.txt решает эту проблему.
Как работает
Файл содержит список python пакетов и их версий.
Пример:
Когда выполняется:
pip:
- читает файл
- ищет пакеты в PyPI
- скачивает зависимости
- устанавливает нужные версии библиотек
Создание requirements.txt
Через pip freeze
После выполнения появится файл:
Установка зависимостей
pip автоматически установит все библиотеки из файла.
Форматы версий
Точная версия
Используется чаще всего.
Позволяет получить полностью воспроизводимое окружение.
Минимальная версия
Разрешает установку более новых версий.
Диапазон версий
Разрешает устанавливать версии только внутри диапазона.
Без фиксации версии
Предупреждение
Не рекомендуется для production.
Структура production проекта
Часто используется несколько файлов зависимостей.
Основные зависимости
Dev зависимости
Например:
Пример workflow
Создание проекта
Создание virtualenv
Установка библиотек
Создание requirements.txt
Установка зависимостей на другой машине
Что происходит внутри
Когда выполняется:
pip:
- открывает requirements.txt
- читает список зависимостей
- проверяет версии
- ищет пакеты в PyPI
- скачивает wheel/source archives
- устанавливает библиотеки
- проверяет dependency tree
Best practices
Использовать virtualenv
requirements.txt почти всегда используется вместе с virtualenv.
Рекомендация
Один проект = один virtualenv + один requirements.txt
Фиксировать версии
Плохо:
Хорошо:
Коммитить requirements.txt в git
requirements.txt должен храниться в репозитории.
Обновлять зависимости осознанно
Не стоит бездумно обновлять все библиотеки.
Проверяйте:
- changelog
- breaking changes
- compatibility
Anti-patterns
pip freeze из грязного окружения
Плохо:
если в virtualenv установлен мусор.
В requirements.txt попадут ненужные библиотеки.
Хранение .venv в git
Нельзя коммитить virtualenv.
Добавьте:
в .gitignore.
Отсутствие фиксации версий
Плохо:
Это делает окружение нестабильным.
Типичные ошибки
ModuleNotFoundError
Например:
Причины:
- зависимости не установлены
- virtualenv не активирован
- requirements.txt не применён
Dependency conflicts
Разные библиотеки могут требовать несовместимые версии пакетов.
Например:
- package A требует urllib3==1.x
- package B требует urllib3==2.x
requirements.txt устарел
Причина:
- разработчик установил новые библиотеки
- но не обновил requirements.txt
Полезные команды
Создать requirements.txt
Установить зависимости
Проверить конфликты зависимостей
Показать установленные пакеты
Обновить пакет
Итог
- requirements.txt
- основной способ хранения python зависимостей проекта.
Используется вместе с:
- pip
- virtualenv
- CI/CD
- Docker
- production deployment
Понимание requirements.txt — обязательный навык Python и DevOps инженера.