Как зафиксировать зависимости Python-проекта с помощью pip?

«Как зафиксировать зависимости Python-проекта с помощью pip?» — вопрос из категории Библиотеки и модули, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Стандартный способ зафиксировать зависимости Python-проекта — использовать файл requirements.txt. Это позволяет создавать воспроизводимые окружения на других машинах или в CI/CD.

Процесс состоит из двух шагов:

1. Фиксация зависимостей (создание файла)

Чтобы сохранить все пакеты, установленные в вашем текущем виртуальном окружении, и их точные версии, выполните команду:

pip freeze > requirements.txt

Эта команда создаст файл requirements.txt в текущей директории.

Пример содержимого requirements.txt:

Django==4.2.7
psycopg2-binary==2.9.9
requests==2.31.0

2. Установка зависимостей из файла

Чтобы установить все пакеты, перечисленные в файле, на другой машине или в новом окружении, используется команда:

pip install -r requirements.txt

Лучшие практики:

  • Используйте виртуальные окружения (venv). Это ключевой инструмент для изоляции зависимостей каждого проекта и избежания конфликтов версий. Всегда активируйте окружение перед работой с pip.

    # Создание окружения
    python -m venv .venv
    # Активация (Linux/macOS)
    source .venv/bin/activate
  • Разделяйте зависимости. Для больших проектов часто создают несколько файлов: requirements.txt для продакшена и dev-requirements.txt для инструментов разработки (например, pytest, black, flake8).

  • Рассмотрите pip-tools. Для более продвинутого управления зависимостями pip-tools позволяет поддерживать файл requirements.in с основными зависимостями, а requirements.txt генерировать автоматически, включая все вложенные зависимости.