#python #python-poetry
Вопрос:
Я только что обнаружил после a poetry update
, что сгенерированный package.lock
файл содержит блок
[[package]] name = "black" version = "21.8b0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = "gt;=3.6.2" [package.dependencies] click = "gt;=7.1.2" mypy-extensions = "gt;=0.4.3" pathspec = "gt;=0.9.0,lt;1" platformdirs = "gt;=2" regex = "gt;=2020.1.8" tomli = "gt;=0.2.6,lt;2.0.0" typing-extensions = {version = "gt;=3.10.0.0", markers = "python_version lt; "3.10""} [package.extras] colorama = ["colorama (gt;=0.4.3)"] d = ["aiohttp (gt;=3.6.0)", "aiohttp-cors (gt;=0.4.0)"] jupyter = ["ipython (gt;=7.8.0)", "tokenize-rt (gt;=3.2.0)"] python2 = ["typed-ast (gt;=1.4.2)"] uvloop = ["uvloop (gt;=0.15.2)"] [[package]] name = "black" version = "21.9b0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = "gt;=3.6.2" [package.dependencies] click = "gt;=7.1.2" mypy-extensions = "gt;=0.4.3" pathspec = "gt;=0.9.0,lt;1" platformdirs = "gt;=2" regex = "gt;=2020.1.8" tomli = "gt;=0.2.6,lt;2.0.0" typing-extensions = {version = "gt;=3.10.0.0", markers = "python_version lt; "3.10""} [package.extras] colorama = ["colorama (gt;=0.4.3)"] d = ["aiohttp (gt;=3.6.0)", "aiohttp-cors (gt;=0.4.0)"] jupyter = ["ipython (gt;=7.8.0)", "tokenize-rt (gt;=3.2.0)"] python2 = ["typed-ast (gt;=1.4.2)"] uvloop = ["uvloop (gt;=0.15.2)"] [[package]] name = "black" version = "21.10b0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = "gt;=3.6.2" [package.dependencies] click = "gt;=7.1.2" mypy-extensions = "gt;=0.4.3" pathspec = "gt;=0.9.0,lt;1" platformdirs = "gt;=2" regex = "gt;=2020.1.8" tomli = "gt;=0.2.6,lt;2.0.0" typing-extensions = {version = "gt;=3.10.0.0", markers = "python_version lt; "3.10""} [package.extras] colorama = ["colorama (gt;=0.4.3)"] d = ["aiohttp (gt;=3.7.4)"] jupyter = ["ipython (gt;=7.8.0)", "tokenize-rt (gt;=3.2.0)"] python2 = ["typed-ast (gt;=1.4.3)"] uvloop = ["uvloop (gt;=0.15.2)"]
Как видите, есть черное 21.8b0
, и черное 21.9b0
, и черное 21.10b0
. Что это значит? Какая версия будет установлена?
Ответ №1:
Это похоже на дамп промежуточного пула рассматриваемых опций, называемых транзакциями в поэзии (например, пакеты с версиями, зависящими от разных маркеров платформы). По умолчанию решение может приниматься по «последнему» правилу.
Я могу воспроизвести это поведение с помощью
[tool.poetry.dependencies] python = "~3.8" numpy = [ {version="1.18.*",markers="python_version=='3.8.*'"}, {version="1.21.*",markers="python_version=='3.9.*'"}, ]
и poetry install --dry-run -vv
создает обе версии в файле блокировки.
Какие стихи вы используете? Я думаю, что файл был очищен в последних выпусках и указывает только на окончательный выбор.