Как установить зависимости проекта с помощью pip и requirements.txt

Раздел: Настройка -> Зависимости проекта

Установка зависимостей из requirements.txt

Каким способом быстрее всего установить все пакеты из файла requirements.txt?

Основной и наиболее эффективный способ - использование команды python -m pip install -r requirements.txt. Этот метод гарантирует использование правильного интерпретатора Python и позволяет избежать путаницы с путями. Процесс:

python -m pip install -r requirements.txt

Python m pip install requirements txt (установка пакетов из requirements.txt через pip)

Команда читает файл requirements.txt и устанавливает все перечисленные пакеты с указанными версиями. Если файл отсутствует, выводится ошибка ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'.

Типичные проблемы:

  • Файл не найден - проверяется текущая директория. Следует указывать полный путь: -r /path/to/requirements.txt.
  • Конфликты версий - pip старается найти совместимую комбинацию. Если конфликт неразрешим, выводится сообщение ERROR: Cannot install -r requirements.txt (line XX) because these package versions conflict. Рекомендуется пересмотреть требования.

Как установить зависимости в изолированном окружении?

Для изоляции проекта используется виртуальное окружение (virtualenv или встроенный модуль venv). Сначала создаётся окружение, затем активируется и выполняется установка:

python -m venv venv
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate    # Windows
python -m pip install -r requirements.txt

Это позволяет избежать конфликтов с глобальными пакетами. Если окружение не активировано, установка происходит в системный Python, что может нарушить его работу.

Какие опции pip помогают при проблемных зависимостях?

При установке могут потребоваться дополнительные параметры:

  • --no-deps - установка только указанных пакетов без их зависимостей. Применяется, если зависимости уже установлены отдельно или нужно минимизировать количество пакетов.
  • --only-binary :all: - принудительное использование только предварительно собранных wheels. Полезно для избежания компиляции исходных кодов, но может привести к отсутствию нужной версии.
  • --index-url - указание альтернативного репозитория пакетов (например, корпоративного зеркала).
python -m pip install -r requirements.txt --no-deps
python -m pip install -r requirements.txt --only-binary :all:

Ошибка при отсутствии wheel: ERROR: Could not find a version that satisfies the requirement ... (from versions: none). Решение - разрешить сборку из исходников без --only-binary.

Как установить только часть зависимостей из файла?

Иногда требуется установить не все, а определённые пакеты. Можно временно отредактировать файл, но удобнее использовать pip install с конкретными именами:

pip install $(grep -E '^(numpy|pandas)' requirements.txt)

Команда извлекает строки, начинающиеся с numpy или pandas, и передаёт их pip. Альтернатива - разделить требования на несколько файлов (base.txt, dev.txt) и подключать их через -r.

Как создать requirements.txt на основе установленных пакетов?

Для переноса окружения используется pip freeze. Вывод команды содержит все установленные пакеты с точными версиями:

python -m pip freeze > requirements.txt

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

Расширенные примеры использования pip install -r

Ниже приведены различные сценарии с подробными пояснениями.

Установка с указанием индекса и дополнительных индексов

Для установки из частного репозитория (например, Nexus) и PyPI одновременно:

Пример
python -m pip install -r requirements.txt --index-url https://private.repo.com/simple --extra-index-url https://pypi.org/simple

Результат: pip сначала пробует private.repo.com, если пакета нет - переходит на PyPI.

Установка из локального файла или каталога

Файл requirements.txt может содержать локальные пути:

Пример
# requirements.txt
./local-package
https://github.com/user/repo/archive/master.zip
my-package @ file:///home/user/packages/my-package.whl

Команда установки:

Пример
python -m pip install -r requirements.txt

Результат: устанавливается пакет из указанного локального каталога (должен содержать setup.py или pyproject.toml).

Ошибка: ERROR: Directory './local-package' is not installable. Neither 'setup.py' nor 'pyproject.toml' found. Решение: проверить наличие файла сборки.

Установка с игнорированием кэша и принудительной переустановкой

Если нужно переустановить все пакеты, игнорируя кэш:

Пример
python -m pip install --no-cache-dir --force-reinstall -r requirements.txt

Результат: pip загружает свежие версии каждого пакета и заменяет уже установленные. Полезно при подозрении на повреждённые кэшированные файлы.

Установка только бинарных пакетов без сборки

Для ускорения установки и избежания компиляции (особенно на Windows):

Пример
python -m pip install -r requirements.txt --only-binary=:all: --no-build-isolation

Результат: pip выбирает только предварительно собранные .whl. Если для какого-то пакета нет wheel, установка прервётся с ошибкой.

Установка с учётом ограничений (constraints)

Файл constraints.txt задаёт границы версий, не обязывая устанавливать пакеты. Команда:

Пример
python -m pip install -r requirements.txt -c constraints.txt

Результат: версии пакетов из requirements.txt подгоняются под ограничения из constraints.txt. Если пакет не указан в requirements, он не устанавливается.

Генерация изменённого requirements.txt с помощью pip-tools

Утилита pip-compile из пакета pip-tools создаёт точный файл замороженных зависимостей:

Пример
pip install pip-tools
pip-compile requirements.in

Файл requirements.in содержит верхнеуровневые зависимости, а requirements.txt - полный список с хешами и версиями всех подзависимостей. Установка выполняется стандартно:

Пример
python -m pip install -r requirements.txt

Результат: воспроизводимое окружение с зафиксированными версиями.

Установка из файла с нестандартной кодировкой

Если requirements.txt сохранён в кодировке, отличной от UTF-8, pip может выдать ошибку. На Linux/macOS можно использовать:

Пример
python -m pip install -r requirements.txt --encoding cp1251

Результат: pip читает файл с указанной кодировкой. Параметр поддерживается в pip 20.3+.

Установка пакетов из requirements.txt через pip - comments

En
Python m pip install requirements txt (python)