Как вы управляете зависимостями Python-проекта
Вопрос
Как вы управляете зависимостями и окружениями в Python-проекте?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Отдельное виртуальное окружение на проект
Зависимости в `pyproject.toml`, разделение на основные и dev
Lock-файл с точными версиями для воспроизводимости
Инструмент: uv, Poetry или pip-tools
Обновления зависимостей контролируемо, проверка уязвимостей
В Docker ставить по lock-файлу
Что могут спросить следом
- Чем
requirements.txtотличается от lock-файла? - Как обновить одну зависимость, не трогая остальные?
Разбор
Образцовый ответ: «Для каждого проекта своё виртуальное окружение, в системный Python ничего не ставлю. Сейчас в новых проектах использую uv: он создаёт .venv, держит зависимости в pyproject.toml, а точные версии всего дерева в uv.lock, который коммитится. Зависимости делю на основные и группу dev: pytest, ruff, mypy. В pyproject указываю разумные диапазоны, а воспроизводимость обеспечивает lock-файл: CI и Docker-образ ставят ровно то же, что у меня, командой синхронизации по lock. Обновляю зависимости осознанно: точечно одну библиотеку с пересборкой lock, прогон тестов, раз в какое-то время массово, плюс проверка уязвимостей, например pip-audit или Dependabot. В старых проектах встречал Poetry и связку pip-tools с requirements.in и сгенерированным requirements.txt, принцип тот же».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Свой файл перекрыл модуль стандартной библиотеки
Следующий вопрос
Что происходит при import в Python