如何在不升级依赖的情况下更新Poetry的锁文件?

新手上路,请多包涵

在将 [tool.poetry.extras] 部分添加到 pyproject.toml 之后,Poetry 显示以下警告,例如在安装时:

警告:锁定文件未与 pyproject.toml 中的最新更改同步。您可能会得到过时的依赖项。运行更新以更新它们。

很好,但是如果我运行 poetry update 它会升级我的依赖项,这不是我现在想要的。如果我改为运行 poetry lock ,它仍然会升级依赖项。

很抱歉没有提供可重现的示例,生成具有过时依赖项的 poetry.lock 文件非常棘手。我现有的太大了,不能在这里张贴。

更新:为此问题打开 了 sdispater/poetry#1614

原文由 Claudio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

lock 命令有一个特定选项:

 poetry lock --no-update

这使得从 pyproject.toml 中删除依赖项并更新锁定文件而不升级依赖项成为可能。

请注意,这仅在 1.1.2(或更早版本?)之后可用,并且行为 将在 v2.0 中更改

原文由 slhck 发布,翻译遵循 CC BY-SA 4.0 许可协议

当前(从版本 1.0.0b6 )似乎没有任何 Poetry 命令可以在不升级依赖项的情况下更新锁定文件。

但是,如果您的项目有一些最新的依赖 foo ,您可以通过调用以下命令来解决此限制:

 poetry update foo

这将保留 foo 在当前版本(因为它已经是最新版本),并且也不会触及任何其他依赖项。但它会将锁定文件与对 pyproject.toml 的任何更改同步。

在我自己的例子中,此命令将 [extras] 部分添加到锁定文件并更新了元数据内容哈希,而没有触及任何其他内容。锁定文件现在是最新的并且警告消失了。

更新:

更好的解决方法是在依赖树之外添加和删除包,例如 insecure-package

 poetry add insecure-package && poetry remove insecure-package

这更好的原因之一是使用 poetry update 您需要传递与您最初使用的选项完全相同的选项。有关问题中提到的 GitHub 问题的更多详细信息。

原文由 Claudio 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题