跳到内容

同步和锁定

Rye 使用 uv 来管理依赖项。

为了下载依赖项,rye 会创建两个“锁定文件”(称为requirements.lockrequirements-dev.lock)。这些不是真正的锁定文件,但它们在更好的解决方案实现之前,可以起到类似的作用。

无论何时调用rye sync,它都会更新锁定文件以及虚拟环境。如果只想更新锁定文件,则可以使用rye lock

锁定

在锁定过程中,可以提供一些选项来更改锁定行为。这些标志在rye sync上也可以使用。

--update / --update-all

将特定或所有要求更新到最新版本。如果没有此标志,依赖项将仅在必要时更新。

rye lock --update-all

--features / --all-features

Python 包可以有额外的依赖项。默认情况下,安装的本地包将只安装默认功能。例如,如果您有一个额外的依赖项,则只有在启用该功能时才会安装。

rye add --optional=web flask
rye lock --features=web

在使用 工作区 时,包名称需要以斜杠作为前缀

rye lock --features=package-name/feature-name

--features 参数可以多次传递,功能也可以用逗号分隔。要打开所有功能,可以使用--all-features 参数。

rye lock --all-features

--pre

默认情况下,更新和版本解析不会考虑包的预发布版本。如果您确实要包含这些版本,请传递--pre

rye lock Flask --pre

--with-sources

新在 0.18.0

默认情况下(除非在 pyproject.toml 中将 tool.rye.lock-with-sources 配置键设置为 true),锁定文件不会生成源引用。这意味着如果使用自定义源,则无法通过 uvpip 安装锁定文件,除非手动传递 --find-links 和其他参数。这在将锁定文件用于 Docker 镜像构建时特别有用。

当传递此标志时,锁定文件将生成对 --index-url--extra-index-url--find-links 的引用。

rye lock --with-sources

同步

同步接受与 lock 相同的参数,以及一些其他参数。同步通常会先执行 lock 所做的事情,然后使用锁定文件更新虚拟环境。

--no-lock

要阻止锁定步骤自动运行,请传递 --no-lock

rye sync --no-lock

--no-dev

仅基于生产锁定文件 (requirements.lock) 进行同步,而不是基于开发锁定文件 (requirements-dev.lock)。

rye sync --no-dev

平台兼容性

默认情况下,锁定文件依赖于生成它们的平台。

例如,如果您的项目依赖于特定于平台的包,并且您在 Windows 上生成锁定文件,那么这些锁定文件将包含特定于 Windows 的项目。因此,它们将与 Linux 或 macOS 等其他平台不兼容。

要生成跨平台锁定文件,您可以通过在您的 pyproject.toml 中添加以下内容来启用 uv 的 universal 设置

[tool.rye]
universal = true