同步和锁定
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