Ответ
Файл poetry.lock обеспечивает детерминированные (воспроизводимые) сборки проекта. Он записывает точные версии каждой зависимости и под-зависимости, которые были установлены для проекта, вместе с их хеш-суммами.
Основная задача — решить проблему, когда в pyproject.toml указаны диапазоны версий (например, requests = "^2.28.0"). Без lock-файла разные разработчики или CI/CD-системы могли бы установить разные минорные версии пакета, что потенциально может привести к ошибкам.
Ключевые характеристики:
- Воспроизводимость: Гарантирует, что команда
poetry installвсегда установит один и тот же набор пакетов на любой машине. - Безопасность: Хранит хеши пакетов для проверки их целостности при установке.
- Автоматическое управление: Файл не редактируется вручную. Он создается и обновляется командами
poetry lockилиpoetry update. - Командная работа: Этот файл необходимо коммитить в систему контроля версий (например, Git), чтобы вся команда работала с идентичным окружением.
Пример фрагмента poetry.lock:
[[package]]
name = "requests"
version = "2.31.0"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
certifi = ">=2017.4.17"
charset-normalizer = {version = ">=2,<4", markers = "python_version >= '3'"}
idna = {version = ">=2.5,<4", markers = "python_version >= '3'"}
urllib3 = {version = ">=1.21.1,<3", markers = "python_version >= '3'"}
[metadata]
# ...
content-hash = "..."