21

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

警告:锁定文件不是最新的 pyproject.toml 中的最新更改。您可能会得到过时的依赖项。运行 update 来更新它们。

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

很抱歉没有提供可重现的示例,生成具有过时依赖项的poetry.lock 文件非常棘手。我现有的一个太大了,无法在这里发布。

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

4

3 回答 3

44

从 1.1.2(或更早版本?)开始,现在有一个选项:

poetry lock --no-update

这使得可以在pyproject.toml不升级依赖项的情况下从锁定文件中删除依赖项并更新锁定文件。

请注意,该行为将在 v2.0 中更改

于 2020-11-05T15:36:39.473 回答
9

目前(截至 version 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 问题的更多详细信息。

于 2019-11-22T13:07:27.350 回答
0

我不确定为什么poetry lock要更新。该文档没有提到它更新了依赖项。这对我来说可以删除我的日志输出中的警告。

于 2020-05-14T21:27:52.607 回答