Pip 26.2 получит флаг --only-deps: конец 16-летней эпопее с зависимостями

· Программы
После почти двух десятилетий обходных решений в pip наконец появится опция установки зависимостей проекта без установки самого проекта.

cover.svg

В грядущей версии pip 26.2, выход которой ожидается в июле 2026 года, должен появиться новый флаг --only-deps. Он позволяет установить все зависимости проекта, перечисленные в pyproject.toml, не устанавливая при этом сам проект как пакет:

pip install --only-deps .
pip install --only-deps .[doc]

Второй вариант дополнительно подтягивает опциональные зависимости. Пул-реквест #13895, реализующий эту возможность, открыл Себастиан Хёффнер 8 апреля 2026 года; он опирается на давнюю дискуссию в issue #11440, поднятую ещё в сентябре 2022 года.

Почему это важно

Задача звучит просто, но десятилетиями не имела аккуратного решения. Речь о проектах, которые не предполагается устанавливать как библиотеку: бэкенды приложений, REST API, обычные скрипты. Для них нужны зависимости, но не установка самого кода в виде пакета.

Автор вспоминает привычные костыли. Классический pip freeze фиксирует точные версии всех пакетов, включая зависимости зависимостей, — но результат оказывается привязан к конкретной машине, версии Python и ОС, и на другом окружении установка нередко ломается. Отсюда рождались рецепты вроде pip freeze --local | grep -v '^\-e' | cut -d = -f 1, отсекающие номера версий, а затем и просто ручное ведение requirements.txt.

Команда pip install -e . работает с самого появления pip в 2008 году и остаётся быстрым способом поставить список зависимостей, но она устанавливает и сам пакет. Для приложений это лишнее, а editable-установки к тому же не считаются хорошей практикой при развёртывании.

Долгий путь сообщества

Автор выстраивает цепочку вопросов на StackOverflow: 16 лет назад советовали pip install -e ., позже — сторонние утилиты pip-chill, pipreqs, затем poetry и hatch, а год назад — uv. Каждый следующий инструмент решал задачу чуть удачнее предыдущего.

Почву подготовили стандарты: PEP 517 (2017) добавил в pyproject.toml хуки для систем сборки, а PEP 735 (2023) ввёл группы зависимостей, позволяющие выбирать, какие именно наборы устанавливать.

Отдельно автор отмечает роль uv — инструмента, который своей скоростью и продуманным интерфейсом (например, uv sync --no-install-project) показал, насколько велик отложенный спрос, и, похоже, подтолкнул давно застрявшие изменения в самом pip к жизни.

Итог автор оценивает без пафоса: небольшое, но приятное улучшение качества жизни, к которому Python-сообщество шло почти двадцать лет — усилиями авторов PEP, мейнтейнеров pip и разработчиков сторонних пакетов.


Источник: Lobsters

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.