Poetry - это инструмент только для работы с Python проектом, позволяющий управлять его зависимостями, собирать и публиковать пакет. Для решения всех задач по разработке этого недостаточно, нужны вспомогательные инструменты.
Со своей основной задачей Poetry справляется хорошо. uv может делать практически всё, что и Poetry, но в несколько раз быстрее.
Отличия uv, которые были замечены во время миграции: 1) Нет команды для создания шелла с активированным виртуальным окружением. Этот функционал планируют удалить из основного пакета Poetry в версии 2.0. 2) Разная логика фиксации зависимостей через тильду (~) (Poetry, uv). Можно случайно обновить какую-нибудь зависимость до несовместимой версии. 3) Разные имена и структура секций в pyproject.toml.
В текущем варианте нет повторной установки пакетов при каждой сборке образа, так как в большинстве случаев команда инструкции RUN не меняется.
Не вижу особого смысла в фиксировании версии пакета build-essential, так как логика приложения не зависит от него напрямую.
Версия фиксируется только у последнего пакета. Если обновить значение переменной python_version, то произойдёт инвалидация кэша.
Также кэш будет инвалидироваться при обновлении базового образа ubuntu. Для автоматической загрузки актуальных версий образов можно использовать опцию --pull (docker buildx build).
Poetry - это инструмент только для работы с Python проектом, позволяющий управлять его зависимостями, собирать и публиковать пакет. Для решения всех задач по разработке этого недостаточно, нужны вспомогательные инструменты.
Со своей основной задачей Poetry справляется хорошо. uv может делать практически всё, что и Poetry, но в несколько раз быстрее.
Отличия uv, которые были замечены во время миграции:
1) Нет команды для создания шелла с активированным виртуальным окружением. Этот функционал планируют удалить из основного пакета Poetry в версии 2.0.
2) Разная логика фиксации зависимостей через тильду (
~
) (Poetry, uv). Можно случайно обновить какую-нибудь зависимость до несовместимой версии.3) Разные имена и структура секций в
pyproject.toml
.В текущем варианте нет повторной установки пакетов при каждой сборке образа, так как в большинстве случаев команда инструкции
RUN
не меняется.Не вижу особого смысла в фиксировании версии пакета
build-essential
, так как логика приложения не зависит от него напрямую.Версия фиксируется только у последнего пакета. Если обновить значение переменной
python_version
, то произойдёт инвалидация кэша.Также кэш будет инвалидироваться при обновлении базового образа
ubuntu
. Для автоматической загрузки актуальных версий образов можно использовать опцию--pull
(docker buildx build).Подробнее можно почитать тут.
Спасибо, обновил.
Поддержка секции
dependency-groups
была добавлена в uv четыре дня назад в версии 0.4.27.