Что такое `requirements.txt` и как его использовать с `pip`?

requirements.txt - это текстовый файл, содержащий список Python пакетов и их версий, необходимых для проекта. Используется для воспроизводимости окружения.

Основные команды pip для работы с ним:
  • pip install -r requirements.txt - устанавливает все пакеты, перечисленные в файле.
  • pip freeze > requirements.txt - создает файл requirements.txt, содержащий список установленных пакетов и их версий в текущем окружении.

requirements.txt - это простой текстовый файл, который содержит список всех Python-пакетов (и их версий), необходимых для конкретного проекта. Он служит для точного воспроизведения окружения разработки и развертывания. Использование requirements.txt позволяет гарантировать, что все, кто работает с проектом (разработчики, тестировщики, операторы) используют одни и те же версии пакетов, избегая проблем совместимости и ошибок, связанных с расхождениями в версиях зависимостей.

Как использовать requirements.txt с pip:

  1. Создание requirements.txt:

    Чтобы создать файл requirements.txt на основе уже установленных пакетов в вашем виртуальном окружении (рекомендуется использовать виртуальные окружения!), используйте команду:

    pip freeze > requirements.txt

    Эта команда перенаправляет вывод команды pip freeze (которая перечисляет все установленные пакеты и их версии) в файл requirements.txt. Если вы хотите включить в requirements.txt только пакеты, которые являются прямыми зависимостями вашего проекта (исключая транзитивные зависимости, т.е. зависимости зависимостей), можно использовать инструмент вроде pipreqs.

  2. Установка пакетов из requirements.txt:

    Чтобы установить все пакеты, перечисленные в requirements.txt, используйте команду:

    pip install -r requirements.txt

    Опция -r указывает pip читать список пакетов из указанного файла. pip установит все пакеты и их указанные версии (если они указаны), создавая соответствующее окружение. Убедитесь, что вы активировали ваше виртуальное окружение перед выполнением этой команды.

  3. Указание версий пакетов:

    В requirements.txt вы можете указывать точные версии пакетов, используя различные операторы:

    • ==: Указывает точную версию, например, requests==2.28.1.
    • >=: Указывает минимальную версию, например, numpy>=1.20.
    • <=: Указывает максимальную версию, например, pandas<=1.5.
    • > и <: Указывают строгие минимальные и максимальные версии.
    • ~=: "Совместимый релиз". Например, Django~=3.2 означает, что будет установлена последняя версия Django из ветки 3.2, но не 4.0 и выше. Это полезно для обеспечения совместимости с обратно совместимыми исправлениями ошибок и функций.

    Рекомендуется использовать точные версии (==) для production-окружений, чтобы обеспечить воспроизводимость. Для разработки можно использовать более гибкие спецификации (>=, <=, ~=), чтобы получать обновления пакетов.

  4. Обновление пакетов:

    Если вы хотите обновить пакеты в вашем виртуальном окружении и обновить requirements.txt, сначала обновите пакеты с помощью pip install --upgrade <пакет>, а затем обновите requirements.txt с помощью pip freeze > requirements.txt.

  5. Комментарии:

    Вы можете добавлять комментарии в файл requirements.txt, начиная строку с символа #. Это полезно для документирования причин использования конкретной версии пакета или для временного исключения пакета из установки.

В целом, requirements.txt - это важный инструмент для управления зависимостями в Python-проектах, обеспечивающий воспроизводимость, упрощающий развертывание и предотвращающий конфликты версий.

0