Выбор ответа Middle Модули, пакеты и окружения спрашивают часто обновлено

Зачем lock-файл зависимостей

Вопрос

Зачем нужен lock-файл (uv.lock, poetry.lock) при наличии зависимостей в pyproject.toml?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Фиксирует точные версии всех зависимостей, включая транзитивные. В pyproject.toml пишут допустимые диапазоны (django=5.2,<6), и без lock-файла завтрашняя установка может притянуть другие версии транзитивных пакетов.

Варианты ответа

  1. Фиксирует точные версии всех зависимостей, включая транзитивныеправильный ответ
  2. Запрещает другим разработчикам менять зависимости проекта
  3. Заменяет pyproject.toml, после генерации lock-файла его можно удалить
  4. Нужен только для публикации пакета на PyPI вместе с wheel

Разбор

В pyproject.toml пишут допустимые диапазоны (django>=5.2,<6), и без lock-файла завтрашняя установка может притянуть другие версии транзитивных пакетов. Lock фиксирует точное дерево, обычно с хешами, и CI, прод и ноутбук ставят одно и то же. Он не заменяет pyproject.toml и не нужен для публикации библиотеки: библиотеки как раз публикуют с диапазонами.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме