В pyproject.toml вы используете разделы [tool.poetry.dependencies]
и [tool.poetry.dev-dependencies]
, чтобы указать свои зависимости по имени и версии.
Когда вы запустите poetry install
, Poetry установит точные требования хэшированиязаписал в свой файл poetry.lock
.
Однако, когда вы запустите poetry update
, Poetry проверит, может ли он найти более новые версии ваших зависимостей, которые соответствуют указанным вами критериям версии.Если poetry update
найдет более новую версию, разрешенную вашими спецификаторами версий, она загрузит и установит ее.Он также обновит свой файл poetry.lock
новым номером версии и новым хешем.
Поэзия поддерживает несколько различных способов объявления разрешенной версии ваших зависимостей.
Точная версия
Если вы не включите никаких модификаторов, Poetry сохранит вашу зависимость на точной версии.
beepboop = "2.1.7"
С этой конфигурацией, если новаявыпущена версия beepboop, poetry update
не установит ее.
Версия каретки
Если вы используете символ каретки ^
, Poetry обновится до любой новой версии, которая не изменитСамая левая ненулевая секция.
beepboop = "^2.1.7"
# Equivalent to >=2.1.7, <3.0.0
При указанной выше конфигурации poetry update
обновит beepboop до 2.1.8, 2.2, 2.3 и т. д. Поэзия не обновится до beepboop 3.0, потому что это меняет крайнюю левуюненулевой раздел номера версии от 2 до 3.
zeepzorp = "^0.24.1"
# Equivalent to >=0.24.1, <0.25.0
При указанной выше конфигурации poetry update
обновит zeepzorp до 0.24.2.Поэзия не будет обновляться до zeepzorp 0.25.0, потому что это меняет крайний левый ненулевой раздел номера версии с 24 на 25.
Модификатор версии каретки довольно агрессивен в отношении того, какие обновленные версии разрешены.Это может вызвать проблемы, если сопровождающие ваших зависимостей вносят критические изменения без увеличения номера основной версии.
Версия тильды
Символ тильды ~
указывает поэзии разрешить незначительные обновления.При указании основной, вспомогательной версии и версии исправления допускаются только изменения на уровне исправления.Если вы укажете основную и вспомогательную версию, снова допускаются только изменения уровня патча.Если вы указываете только основную версию, то допускаются незначительные изменения и изменения уровня исправления.
beepboop = "~2.1.7"
# Equivalent to >=2.1.7, <2.2.0
beepboop = "~2.1"
# Equivalent to >=2.1.0, <2.2.0
beepboop = "~2"
# Equivalent to >=2.0.0, <3.0.0
Модификатор версии тильды менее агрессивен, чем модификатор версии каретки в обновлениях, которые он допускает.
Версия с подстановочными знаками
Символ *
со звездочкой является подстановочным знаком.Любой номер версии допускается в подстановочном знаке.
beepboop = "2.1.*"
# Equivalent to >=2.1.0, <2.2.0
beepboop = "2.*"
# Equivalent to >=2.0.0, <3.0.0
beepboop = "*"
# Allows any version. Equivalent to >=0.0.0
Неравенство Версия
Вы можете использовать неравенства для указания допустимых диапазонов версий.Некоторые примеры:
beepboop = ">= 1.2.0"
beepboop = "> 1"
beepboop = "< 2"
beepboop = "!= 1.2.3"
Множество спецификаторов версий
Вы можете определить диапазоны разрешенных версий, используя несколько неравенств, разделенных запятыми.
beepboop = ">= 1.2, < 1.5, !=1.2.2"
SolverProblemError
Если вы вручную отредактировали файл pyproject.toml
и получили SolverProblemError
, попробуйте использовать команду poetry add
.
Например, я попытался добавить mypy = "^0.670"
к своему pyproject.toml
и получил решающую ошибку.Команда poetry add
отформатировала файл так, как этого хотела поэзия, и указала зависимость как mypy = "^0.670.0"
.
. Вы также можете получить SolverProblemError, если указали версию Python как '*'
в pyproject.toml
.Попробуйте указать более узкую версию Python, например "^3.6"
.См. Этот выпуск GitHub для получения дополнительной информации.
Ссылки
https://poetry.eustace.io/docs/versions/
https://github.com/sdispater/poetry#dependencies-and-dev-dependencies