Python Poetry 的依赖版本语法

2024-01-09

The Poetry https://github.com/sdispater/poetry项目是Python的依赖管理系统。它使用新的pyproject.toml https://www.python.org/dev/peps/pep-0518/文件作为其配置文件。

Poetry 工具支持几种不同的方式来指定允许的依赖项版本。 Poetry 依赖项的版本说明符的语法是什么?


在 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Poetry 的依赖版本语法 的相关文章

随机推荐

  • C++ 函数模板编译错误“‘containerType’不是模板”

    我正在尝试编写一个函数来 字符串化 参数以用于记录目的 例如 我想写这样的东西 vector
  • DirectX 或 OpenGL [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如果您正在用 C 编写下一个 3D 图形密集型应用程序 例如 3D 建模和动画软件 那么哪一个是更好的选择 如果我们认为 C 是独立于平台的 那
  • 如何配置此 Spring-Boot 应用程序以使用 IAM 角色而不是密钥和机密?

    我有一个与 S3 和 SQS 通信的 Spring Boot 应用程序 它使用 AWS 密钥和机密工作得很好 但我发现我有一个限制 因为我不能使用这些凭证 而必须使用 IAM 实例角色进行身份验证 我没有运气让这个微小的改变发挥作用 我创建
  • 消息队列和共享内存的区别?

    我读了很多关于消息队列和共享内存之间差异的文章 但仍不清楚哪一种有利于获得良好的性能 就像共享内存应该比队列更好 但在同步它的情况下也存在性能问题 共享内存和消息队列都可以用来在进程之间交换信息 区别在于how他们被使用了 共享内存正如您所
  • 如何在 Vim 中的 html 标签之间粘贴内容?

    紧迫p将内容粘贴到当前行下方 dit删除 html 标签内的内容 如何在 html 标签内粘贴内容 Nor here p I want to paste something here p Not here 我通常只是这样做vitp它直观地选
  • VS 2010可以自动检查/更新头文件吗?

    这几乎就是我的问题 VS 2010 可以自动检查和更新 C 代码中的头文件吗 VS 2010可以自动从头文件生成cpp文件 从而节省您从头文件复制函数定义的时间吗 我的意思是 它是否可以认为某些方法没有实现 并从头文件中找到的声明生成一个空
  • 量角器可以慢速运行吗?

    有没有办法缓慢运行使用量角器编写的 Angular E2E 测试 以便我可以观察正在发生的情况 以下是我的解决方案 所以基本上我为当前控制流创建了一个装饰器execute函数 现在在每个排队操作之前额外排队 100 毫秒的延迟 这需要在调用
  • Spring MVC @ResponseBody 返回一个列表

    我们想创建一个 WebService 它返回特定对象的列表 我们想通过 apache http 客户端库从另一个 java 程序调用这个 Web 服务 此时 如果我们从 Firefox 中调用 Web 服务 则会出现 406 错误页面 我们
  • Spring 安全和 JSON 身份验证

    我在 spring spring mvc 中有一个完全使用 JSON 通信的应用程序 现在我需要通过 JSON 使用 spring security 3 使用 LdapAuthenticationProvider 对我的应用程序进行身份验证
  • Doctrine 2.0 中未加载延迟加载属性

    我正在使用 PHP 和 Doctrine 2 0 所有实体都工作正常 除了下面详细介绍的实体关系 或者其他实体在我没有注意到的地方失败 考虑以下实体 Entity class Target ManyToOne targetEntity k
  • 根据浏览器应用不同的 CSS 宽度属性? (IE8、FF)

    我必须将宽度应用于 div 宽度值需要根据浏览器的不同而变化 我无法应用条件 css 那么有什么办法可以做到这一点吗 FF apply width 720px IE8 apply width 690px 可以使用一些技巧将它们组合起来 以便
  • 如何在Android中注册睡眠事件?

    我正在开发 Android 3 0 我需要在我的应用程序中知道设备何时进入睡眠 关闭屏幕 我如何注册此意图 事件 以便在发生这种情况时我能够运行一些操作 BroadcastReceiver 中是否有任何通知此操作的操作 This http
  • 图库中的图像自动旋转 - Android

    在我的 Android 应用程序中 我正在从设备库加载图像 在这方面 我面临着有关图像方向的问题 当我从图库加载高分辨率图像时 它们会自动旋转然后显示在我的视图中 我尝试了有关此问题的各种解决方案 但无法得到正确的解决方案 我提到获取方向
  • 如何正确转义 Makefile 的数据?

    我正在动态生成config mk带有将由 Makefile 使用的 bash 脚本 该文件的构造如下 cat gt config mk lt
  • DMA 与中断驱动的 I/O

    我不太清楚 DMA 和中断 I O 之间的区别 当前正在阅读操作系统概念 第 7 版 具体来说 我不确定在这两种情况下何时会发生中断 以及在这两种情况下 CPU 在什么时候可以自由地执行其他工作 我一直在读但不一定能调和的东西 中断驱动 通
  • 为什么 ICC 在 x86 上的汇编中生成“inc”而不是“add”?

    在摆弄简单的 C 代码时 我注意到一些奇怪的事情 ICC为何产生incl eax在为增量生成的汇编代码中而不是addl 1 eax 不过 GCC 的行为符合预期 使用add 示例代码 O3用于 GCC 和 ICC int A B C D E
  • 如何在 Windows 上使用 GCC 11.1 构建 Qt 5.13.2?

    我已经使用 GCC MinGW w64 在 Windows 上成功构建 Qt 5 很长时间了 当我在 GCC 11 1 上尝试相同的操作时 构建失败并出现奇怪的错误消息 我该怎么做才能让它发挥作用 我自己使用以下方法构建了编译器develo
  • 是否可以在不进行额外分配的情况下移动和修改向量?

    考虑以下代码 let u Vec
  • 文件恢复软件如何工作?

    我想做一些简单的文件恢复软件 我想尝试恢复通过按 Shift Delete 删除的文件 我在 Windows 中工作 任何人都可以向我展示任何可以帮助我以编程方式执行此操作的链接或文档吗 我了解 C C NET 有什么指点吗 据我所知 文件
  • Python Poetry 的依赖版本语法

    The Poetry https github com sdispater poetry项目是Python的依赖管理系统 它使用新的pyproject toml https www python org dev peps pep 0518