pip и файл requirements.txt

Мы с вами уже знакомы с менеджером пакетов для языка Python по возможности я буду дополнять эту страницу различными полезными материалами.

Python Package Installer

Можно было бы ожидать что, pip является абреавиатурой, как например npm(Node Package Manager), но как я могу судить три буквы на прямую не переводятся.

pip — система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python. Много пакетов можно найти в Python Package Index.

За более полной информацией по pip советую обращаться к официальной информации:

Файл requirements.txt

Представьте ситуацию, что вы передаете проект использующий сторонние зависимости своему коллеге, как ваш коллега узнает какие зависимости следует установить для работы с этим проектом? Вы скините их через мессенжер, или он будет пытаться запустить его пока не пофиксит все возникающие ImportError?

Ладно.. может он даже установит, все необходимые пакеты.. есть еще одна, более серьезная, проблема. Вам надо добиться того чтобы зависимости были установленны с определенными версиями.

Решение этих проблем максимально простое, давайте будем хранить в проекте файлик со списком зависимостей и их версиями. Назовем мы его requirements.txt

Jinja2==2.11.1
MarkupSafe==1.1.1
psycopg2-binary==2.8.4

Такой файл вы легко можете редактировать руками или же создать файл из уже установленных зависимостей.

pip freeze > requirements.txt

❗️ Но будьте внимательны

При вызове команды pip freeze вы получите все установленные зависимости на вашей системе или в виртуальном окружении. Поэтому советую испльзовать ее только в вашем виртуальном окружении и следить чтобы в нем не были установлены лишние пакеты.

А чего такого в этих лишних проектах? Вот вам только несколько причин:

  • Чтобы приступить к работе над проектом понадобится дольше устанавливать зависимости
  • Некоторые зависимости могут требовать системных библиотек и устанавливаться весьма долго... например psycopg2
  • Если вы будете автоматизировать тестирование и деплоймент вашего проекта.. вы не хотите, чтобы деплой осуществлялся слишком много времени, а контейнеры весили по 1ГБ(если вы их конечно испльзуете)

Чтобы установить зависимости перечисленные в файле requirements.txt, следует вызвать команду pip install с параметром --requirement или флагом -r и указать путь до файла со списком зависимостей.

pip install -r requirements.txt