В предыдущих лекциях мы уже познакомились с основами Django, установили Python и Django, а также создали свое первое виртуальное окружение. Мы поговорили о том, что виртуальное окружение позволяет нам изолировать проекты, предотвращая "зависимостьный хаос". На прошлом занятии вы научились создавать виртуальное окружение с помощью venv, а также активировать его. А теперь давайте двигаться дальше и разберемся, как добавлять магию в проект, устанавливая зависимости с помощью pip. Ведь без этого ваш Django-проект останется одиноким, как старый сервер без запросов.
1. Основы работы с pip
pip — это ваш универсальный кассир, который позволяет добавлять нужные библиотеки (и версии этих библиотек!) в проект. Его имя означает "Pip Installs Packages" — ничего сложного.
Когда вы работаете над проектом, часто нужен набор сторонних инструментов: библиотеки для работы с базами данных, тестирования, обработки изображений и так далее. Вместо того чтобы писать всё это вручную (что займет лет 100), вы можете просто установить готовую библиотеку с помощью pip.
pip у вас уже установлен вместе с Python, но всё-таки проверьте:
pip --version
На выходе вы должны увидеть что-то вроде:
pip 23.2.1 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)
Если pip не установлен по какой-то причине (вдруг вы на машине времени вернулись в эпоху динозавров), его можно установить командой:
python -m ensurepip --upgrade
Версии библиотек и инструментов обновляются быстрее, чем вы успеваете сказать "Django ORM". Поэтому важно держать pip свежим.
Для обновления выполните:
pip install --upgrade pip
2. Установка Django с использованием pip
Установка Django
Теперь, когда мы знаем, что такое pip, давайте установим нашу звезду шоу — Django. Убедитесь, что вы активировали виртуальное окружение (иначе вы загрязните системные пакеты!) и выполните команду:
pip install django
Если всё пройдёт успешно, на экране появится калейдоскоп строк с названием библиотек и версиями, которые подтягивает наш pip. После установки можно проверить установленную версию Django:
python -m django --version
Результат будет примерно таким:
4.2.5
Поздравляю, вы только что установили Django! Это как посадить зерно в землю, только вместо дерева у нас будет сверхмасштабируемый веб-проект.
Установка конкретной версии Django
Бывает, что ваш проект или команда требуют конкретной версии Django. Например, вы разработчик-археолог, работающий с древним проектом на Django 3.2. В таком случае вы можете указать версию во время установки:
pip install django==3.2
Кроме того, можно использовать диапазоны:
pip install "django>=3.2,<4.0"
Таким образом, вы будете уверены, что ваш проект останется совместимым.
3. Управление зависимостями проекта
Проекты, как друзья на вашей вечеринке, имеют разные предпочтения. Один проект хочет библиотеку для работы с SQL, другой — асинхронный фреймворк для обработки запросов. Как организовать эту пеструю команду? Использовать файл зависимостей!
Создание файла requirements.txt
Чтобы фиксировать все зависимости проекта, можно создать специальный файл — requirements.txt. Это текстовый файл, в котором перечислены все библиотеки и их версии. Например:
django==5.1
djangorestframework==3.16.0
psycopg2-binary==2.9.8
Как создать requirements.txt?
Для автоматизации этого процесса выполните команду:
pip freeze > requirements.txt
Она зафиксирует текущие зависимости виртуального окружения и сохранит их в файле.
Установка зависимостей из requirements.txt
Ваш коллега отправил вам проект вместе с requirements.txt. Что делать? Просто выполните:
pip install -r requirements.txt
pip возьмёт все зависимости из файла и установит их. Это особенно удобно при развёртывании проекта в новой среде или на сервере.
Удаление пакетов
Если вы случайно установили библиотеку, которая вам не нужна (например, перепутали numpy с numba), её можно удалить:
pip uninstall <package_name>
Например:
pip uninstall numpy
4. Практика: Установка и управление зависимостями Django-проекта
Давайте закрепим материал и проведем небольшую практику. Вы уже создали виртуальное окружение. Следующие шаги:
- Установите Django и библиотеку для работы с PostgreSQL
Активируйте ваше виртуальное окружение и выполните:
pip install django psycopg2-binary
Дополнительно установите библиотеку для работы с REST API:
pip install djangorestframework
- Зафиксируйте зависимости
Сохраните текущие зависимости в файл requirements.txt:
pip freeze > requirements.txt
Откройте файл и посмотрите, как pip зафиксировал версии всех пакетов.
- Проверка установки зависимостей из файла
Представьте, что мы переносим проект на новую машину. Сначала создайте новое виртуальное окружение, затем выполните:
pip install -r requirements.txt
После этого убедитесь, что все зависимости установлены, введя:
pip list
Практические ошибки и как их избежать
Работа с pip может быть сложнее, чем кажется, но зная типичные ошибки, вы сможете их избежать.
Установка зависимостей вне виртуального окружения. Очень легко забыть активировать окружение. Всегда проверяйте, что виртуальное окружение активно — командой
pip listили просто глядя на подсказку терминала (обычно активированное окружение указывается перед командной строкой).Использование старых версий пакетов. Иногда вы можете случайно установить старую версию библиотеки, просто забыв обновить
pip. Регулярно проверяйте документацию или обновляйте пакеты в проекте.Проблемы совместимости зависимостей. Некоторые библиотеки могут конфликтовать между собой. Используйте файл
requirements.txtи фиксируйте версии.Ошибка "Permission denied". Если вы забыли активировать виртуальное окружение,
pipможет попытаться установить зависимости глобально, требуя прав администратора. Решение: всегда работайте из виртуального окружения.
Реальные кейсы использования
Файл requirements.txt и деплой. В большинстве реальных проектов файл зависимостей используется для консистентности окружения между вашей разработкой и сервером. Например, после выполнения git pull на сервере первой командой будет pip install -r requirements.txt, чтобы убедиться, что все зависимости актуальны.
На собеседованиях. Умение управлять зависимостями часто спрашивают на собеседованиях. Покажите, что вы знаете, как пользоваться requirements.txt, добавлять зависимости и фиксировать их.
В распределенных командах. Работая в команде, вы всегда сможете быть уверены, что используете одинаковые версии библиотек, если все следуют правилам фиксации зависимостей.
Теперь вы готовы к следующему шагу: настройке вашей среды разработки, чтобы работать с Django было так же весело, как играть в любимую игрушку. Но об этом на следующей лекции!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ