同步和锁定
Rye 使用 uv
来管理依赖项。
为了下载依赖项,rye 会创建两个“锁定文件”(称为requirements.lock
和 requirements-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
),锁定文件不会生成源引用。这意味着如果使用自定义源,则无法通过 uv
或 pip
安装锁定文件,除非手动传递 --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