Где хранить зависимости проекта в Python

«Где хранить зависимости проекта в Python» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps-практике управление зависимостями Python-проектов — это часть обеспечения воспроизводимости сборок и развертываний. Я использую комбинацию инструментов:

  1. requirements.txt — стандартный файл для фиксации зависимостей. В CI/CD пайплайне команда pip install -r requirements.txt гарантирует установку нужных версий.

    # requirements.txt
    flask==2.0.1
    requests>=2.26.0
  2. Виртуальные окружения (venv) — для изоляции зависимостей проекта. Папку venv/ всегда добавляю в .gitignore. В Docker-образах изоляция достигается за счет многоэтапных сборок.

  3. poetry или pipenv — для более сложных проектов, где нужны точные версии и управление виртуальным окружением из коробки. poetry.lock или Pipfile.lock коммитятся в репозиторий для детерминированных сборок.

Ключевой принцип: зависимости и их точные версии должны быть зафиксированы в репозитории, а само окружение — создаваться заново на каждом этапе CI/CD (в контейнере или виртуальной машине).