在 pyproject.toml 中,您使用[tool.poetry.dependencies]
and [tool.poetry.dev-dependencies]
部分以按名称和版本指定您的依赖项。
当你跑步时poetry install
,Poetry 将安装它已写入其的确切散列要求poetry.lock
file.
然而,当你跑步时poetry update
,Poetry 将检查是否可以找到与您指定的版本标准相匹配的依赖项的较新版本。如果poetry update
找到您的版本说明符允许的较新版本,它将下载并安装它。它还将更新其poetry.lock
包含新版本号和新哈希的文件。
Poetry 支持多种不同的方式来声明依赖项的允许版本。
确切版本
如果您不包含任何修饰符,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 等。Poetry 不会更新为 beepboop 3.0,因为这会将版本号最左边的非零部分从 2 更改为 3。
zeepzorp = "^0.24.1"
# Equivalent to >=0.24.1, <0.25.0
通过上面的配置,poetry update
将 zeepzorp 更新到 0.24.2。 Poetry 不会更新到 zeepzorp 0.25.0,因为这会将版本号最左边的非零部分从 24 更改为 25。
插入符号版本修饰符对于允许哪些升级版本非常积极。如果依赖项的维护者在不增加主版本号的情况下引入重大更改,这可能会导致问题。
波形符版本
波形符~
角色告诉 Poetry 允许进行小幅更新。如果指定主要版本、次要版本和补丁版本,则仅允许补丁级别的更改。如果您指定主要版本和次要版本,则同样只允许补丁级别的更改。如果您仅指定主要版本,则允许进行次要版本和补丁级别更改。
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"
求解器问题错误
如果您手动编辑您的pyproject.toml
文件,你会得到一个SolverProblemError
,尝试使用poetry add
命令代替。
例如,我尝试添加mypy = "^0.670"
to my pyproject.toml
并出现求解器错误。这poetry add
命令按照诗歌想要的方式格式化文件,并将依赖项指定为mypy = "^0.670.0"
.
如果您将 python 版本指定为'*'
in pyproject.toml
。尝试更狭窄地指定您的 python 版本,例如"^3.6"
。看到这个GitHub问题 https://github.com/sdispater/poetry/issues/743#issuecomment-447937648了解更多信息。
参考
https://python-poetry.org/docs/dependency-specation/ https://python-poetry.org/docs/dependency-specification/
https://github.com/sdispater/poetry#dependency-and-dev-dependencies https://github.com/sdispater/poetry#dependencies-and-dev-dependencies