Настройка окружения: виртуальные окружения и pip
Дайте каждому проекту свой чистый, изолированный набор пакетов
pip — инструмент, который устанавливает эти пакеты, а requirements.txt точно фиксирует, что нужно проекту, чтобы любой мог его пересобрать.- объяснить, почему глобальная установка вызывает конфликты зависимостей,
- создавать и активировать виртуальное окружение через
python -m venv, - устанавливать, просматривать и удалять пакеты с помощью
pip, - зафиксировать проект в
requirements.txtи пересобрать его на другой машине, - читать спецификаторы версий вроде
==,>=и~=.
1. Проблема: один Python, много проектов
Когда вы запускаете pip install без всякой подготовки, пакет попадает в глобальную папку site-packages, общую для всех проектов на вашей машине. Это удобно, пока два проекта не начнут спорить. Представьте старый сайт, работающий только на django==3.2, и новый, которому нужен django==5.0. Для Django есть лишь один глобальный слот, поэтому установка одной версии ломает другую. Это конфликт зависимостей.
Глобальная установка приносит и другие неприятности: нельзя понять, какие пакеты реально использует конкретный проект, часто нужны права администратора для установки на всю систему, а изменение ради одного проекта может незаметно сломать другой спустя месяцы. Решение — изоляция: дать каждому проекту свой личный набор пакетов.