Ari*_*asu 25 python python-poetry
poetry update --lock和 和有什么区别poetry lock?我在官方文档中找不到太多有用的提示,而且我知道两者并不相同,因为我们最近由于意外问题而不得不从升级包切换poetry update --lock到升级包。poetry lock
Dav*_*Liu 21
摘要:您不再更新poetry.lock文件中的包。
poetry lock创建poetry.lock文件,但不安装软件包。
(poetry lock --help描述):
lock 命令从当前目录读取 pyproject.toml 文件,对其进行处理,并锁定诗歌.lock 文件中的依赖项。
“处理”意味着解决依赖关系以兼容(默认情况下,与最新版本)。poetry lock不安装软件包,它只是生成一个poetry.lock文件。
假设我有包 A,它有子依赖项 B。
poetry lock解析文件中的所有依赖项及其子依赖项pyproject.toml。--no-update将阻止任何更新。相反,Poetry 将专注于使pyproject.toml版本兼容,但将使用与pyproject.toml. 这意味着即使包 A 与包 B 的最新版本兼容,它也不会更新包 B,它只会确保使用某些兼容的包 B。poetry update还会更新软件包版本,然后安装更新。
poetry lockpoetry.lock类似poetry lock--lockflag 的描述中推断出来,它不执行安装,而只是更新poetry.lock从上面链接的文档中:
--lock :不执行安装(仅更新锁定文件)。
请注意,更新不仅会安装新包,还会更新多个包。
$ poetry update
Updating dependencies
Resolving dependencies... (106.7s)
Writing lock file
Package operations: 1 install, 39 updates, 0 removals
Run Code Online (Sandbox Code Playgroud)
等等,但这基本上听起来就像poetry install!
几乎。poetry install延迟安装,即:
poetry.lock存在,它只安装锁定文件指定的软件包。poetry.lock存在,它会尝试poetry update解决 中的依赖关系pyproject.toml,创建一个poetry.lock,然后安装它们。因此,就像没有文件poetry install一样。如果您不想更新依赖项,直接从文件安装会稍微方便一些。poetry updatepoetry.lockpoetry.lock
我的经验是:poetry update除非有非常特殊的情况,否则就使用。在您的情况下,可能有一些软件包无法更新,因为该版本已被明确使用,并且升级会导致某些内容以难以修复的方式损坏。