poetry update --lock
和poetry lock
有什么区别?我在官方文档中没有找到太多有用的提示,我知道两者不同,因为最近我们不得不从poetry update --lock
切换到poetry lock
来升级软件包,因为出现了意外问题。
poetry update --lock
和poetry lock
有什么区别?我在官方文档中没有找到太多有用的提示,我知道两者不同,因为最近我们不得不从poetry update --lock
切换到poetry lock
来升级软件包,因为出现了意外问题。
poetry.lock
文件中的软件包了。
poetry lock
创建一个poetry.lock
文件,但不安装包。
(poetry lock --help
描述):
lock命令从当前目录读取pyproject.toml文件,进行处理,并将依赖项锁定在poetry.lock文件中。
"处理"意味着解决依赖项以保持兼容性(默认情况下与最新版本兼容)。poetry lock
不会安装软件包,只会生成一个poetry.lock
文件。
poetry lock
解析 pyproject.toml
文件中的所有依赖项及其子依赖项。--no-update
将阻止任何更新。相反,Poetry 将专注于使 pyproject.toml
中的版本兼容,并使用与 pyproject.toml
中当前存在版本兼容的任何版本。这意味着即使包 A 与包 B 的最新版本兼容,它也不会更新包 B,只会确保使用某个兼容的包 B。诗歌更新
还会更新软件包版本,然后安装更新。
诗歌锁定
一样poetry.lock
,就像诗歌锁定
一样--lock
标志的描述中推断出来,它不执行安装,只是更新poetry.lock
来自上面链接的文档:
--lock:不执行安装(仅更新锁文件)。
注意,更新不仅安装新软件包,还会更新多个软件包。
$ poetry update
Updating dependencies
Resolving dependencies... (106.7s)
Writing lock file
Package operations: 1 install, 39 updates, 0 removals
poetry update
即可。在你的情况下,可能有一些包无法更新,因为该版本被明确使用,并且升级可能会导致某些难以修复的问题。TLDR
对我来说非常令人困惑。 - Akaisteph7TLDR
。它是实际的"摘要"。我之前发表的评论已经过去一段时间了,但再次看到你的"摘要"时,它并没有概括你的实际答案,反而让我更加困惑你的意思。 - Akaisteph7当没有其他参数调用时,它们做同样的事情。
如果您检查源代码,您会发现它们都最终调用相同的函数(def run
)来更新锁定文件。在那之前,它们都使用参数False
调用def execute_operations
,以避免实际安装任何内容。
唯一不同的是在调用这些命令时可以传递哪些其他选项。这些可以影响您要做的事情。您可以在文档中查看这些额外选项。
例如,您可以使用以下命令创建/更新锁定文件,而不更新 pyproject.toml
中先前固定的任何软件包或将 poetry.lock
中固定版本的任何固定版本仅更新到其最新版本:
poetry lock --no-update
poetry update [package] --lock
或者您可以通过使用以下命令以dry-run
模式仅运行锁定文件更新来进行测试:
poetry update --lock --dry-run
poetry update --lock --only=dev