ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

pip и requirements.txt: установка и фиксация зависимостей

Автор: · Обновлено

pip устанавливает дистрибутивы Python и их зависимости в окружение выбранного интерпретатора. В этом занятии вы восстановите отсутствующий pip, установите библиотеку из…

pip устанавливает дистрибутивы Python и их зависимости в окружение выбранного интерпретатора. В этом занятии вы восстановите отсутствующий pip, установите библиотеку из requirements-файла и проверите окружение маленькой программой. Результатом будет воспроизводимая последовательность действий, а не только сообщение об успешной загрузке архива.

Как связаны Python, pip и import

python -m pip запускает pip именно выбранным Python. Короткое pip install requests работает лишь тогда, когда команда pip относится к нужному окружению. В примерах используем явную форму python -m pip install requests; после активации выполните python -m pip --version и сопоставьте путь с python -c "import sys; print(sys.executable)".

Имя дистрибутива в установщике не обязано совпадать с именем модуля: python-docx предоставляет docx, а Pillow — PIL. Поэтому нельзя механически превращать каждое слово из import в команду установки. Сначала найдите инструкцию самого проекта. Формы требований и опции установки перечислены в справочнике pip install.

Если модуля pip нет

В обычной установке CPython попробуйте:

python -m ensurepip --upgrade
python -m pip --version

ensurepip использует компоненты, поставленные вместе с Python; это не скачивание произвольного установщика. Если модуля ensurepip тоже нет, восстановите его способом, предусмотренным вашей установкой Python. Системный Python Linux и Python из менеджера пакетов могут иметь собственные правила. Не подменяйте их случайным sudo pip install: удобнее создать проектное окружение. Для Termux действует отдельная процедура из практикума по Android. ensurepip, поддерживаемые способы установки pip.

Полный опыт с requirements.txt

В новой активированной .venv создайте файл requirements.txt:

requests>=2.32,<3

Установите требования и сохраните программу request_plan.py:

python -m pip install -r requirements.txt
python -m pip check
import requests

request = requests.Request(
    "GET", "https://example.invalid/search", params={"topic": "python", "page": 2}
).prepare()
assert request.url == "https://example.invalid/search?topic=python&page=2"
print(request.method)
print(request.url)

Запустите python request_plan.py. Ожидаются GET и https://example.invalid/search?topic=python&page=2. Здесь создаётся описание запроса; сетевой вызов не выполняется. Вы проверяете импорт и реальную операцию библиотеки без зависимости от доступности внешнего сервера.

-r означает чтение файла требований. Это не имя пакета и не имя каталога с исходниками. В формате requirements предусмотрены также комментарии, ограничения версий и другие формы записи.

Снимок окружения и повторная установка

Сохраните python -m pip freeze > requirements.lock.txt. Диапазон в исходном файле разрешает выбор версии, снимок показывает уже выбранный набор. pip freeze не вычисляет универсальный lock-файл для всех ОС: он перечисляет установленные дистрибутивы. Поэтому сохраняйте рядом версию Python и платформу. Подробности — в справочнике pip freeze.

Создайте второе чистое окружение, установите python -m pip install -r requirements.lock.txt и выполните ту же программу. Сравните вывод и pip check. Не переписывайте исходный файл снимком из старого окружения, где собраны пакеты от нескольких проектов: исчезнет смысл разделения прямых требований и полученного результата.

Диагностика по первому сбою

СимптомЧто проверить следующим действием
No module named pipЗапущенный Python и наличие ensurepip
Could not open requirements fileТекущий каталог и точный путь после -r
No matching distribution foundИмя, ограничение версии, поддерживаемый Python и платформа
ResolutionImpossibleКакие требования требуют несовместимые версии одной зависимости
Установка прошла, import падаетДругой интерпретатор, другое имя модуля или локальный файл, заслоняющий библиотеку

Не меняйте все параметры одновременно. В учебном проекте сначала подтвердите sys.executable, затем проверьте python -m pip show requests, после чего ищите файл requests.py рядом с программой. Такая последовательность отделяет ошибку установки от ошибки поиска модулей.

Следующий шаг

Продолжение — [практикумы по Python-пакетам](/lessons/python/python-package-practice). Выберите задачу с осязаемым результатом: офисный отчёт, Excel-таблицу, обработку изображения или локальную проверку SDK.

Частые вопросы

Как проверить конфликт имён?

Создайте рядом с программой свой requests.py с одной переменной. Посмотрите requests.__file__ и объясните, почему теперь не находится Request. Переименуйте учебный файл и повторите запуск в новом процессе.

Когда нужен --upgrade?

При осознанном обновлении выбранных требований. После него повторяют проверку программы и зависимостей; успешная установка ещё не проверяет бизнес-логику.

Что сдавать как результат практики?

Два файла требований, request_plan.py, версию Python и одинаковый вывод программы в двух окружениях. В обоих случаях pip check должен закончиться сообщением No broken requirements found.; секреты и содержимое пользовательских pip-конфигов в отчёт не включаются.

Источники