工具链管理
Rye 的独特之处在于它不使用系统 Python 安装。相反,它自己下载和管理 Python 安装(称为工具链)。目前,Rye 支持三种类型的工具链,需要一些了解。
- 可移植 CPython: Rye 会为其大多数需求下载可移植的 CPython 构建。这些是从 indygreg/python-build-standalone 获取的。
- 官方 PyPy 构建: PyPy 支持官方发布构建。
- 自定义本地工具链: 可以将本地安装的 Python 解释器注册到 Rye。之后,它们可以与任何 Rye 管理的项目一起使用。
固定工具链
要使项目使用特定工具链,请将工具链的名称写入 .python-version
文件或使用 pin
命令。对于固定 cpython
,可以省略 cpython@
前缀。
rye pin [email protected]
固定可下载版本意味着 Rye 在需要时会自动获取它。默认情况下,工具链固定到一个精确的版本。这意味着即使您写了 rye pin [email protected]
,一个非常具体的 cpython 版本也会被写入到 .python-version
文件中。从 Rye 0.5.0 开始,可以执行“松散”固定。
rye pin --relaxed [email protected]
这将保留 .python-version
文件中的 3.11
,Rye 将为虚拟环境使用最新的可用兼容版本。
在 0.5.0 中更改
添加了使用 rye pin --relaxed
的松散固定。
非原生架构
在 0.14.0 中新增
添加了对获取和固定非原生架构的支持。
默认情况下,固定用于运行机器的架构。这意味着如果您在具有 aarch64 架构的 mac 上固定 [email protected]
,您将使用该 CPU 架构的 cpython 解释器。可以通过在 python 系列名称中添加 -{arch}
来选择不同的架构。例如,要强制使用 x86_64
版本,您需要像这样固定
rye pin [email protected]
请注意,此类自定义固定不会反映在 pyproject.toml
中,而只会反映在 .python-version
中。
列出工具链
要查看安装了哪些工具链,rye toolchain list
会打印一个列表。
rye toolchain list
[email protected] (C:\Users\armin\.rye\py\[email protected]\install\python.exe)
[email protected] (C:\Users\armin\.rye\py\[email protected]\python.exe)
要查看可以安装哪些工具链,还可以传递 --include-downloadable
。
rye toolchain list --include-downloadable
获取工具链
通常 Rye 会自动下载工具链,但可以使用 rye toolchain fetch
(也称为 rye fetch
)显式获取它们。
rye toolchain fetch [email protected]
从 Rye 0.19.0 开始,fetch
的参数从当前固定推断而来。这意味着您也可以按如下方式获取
rye pin 3.10
rye fetch
工具链从两个来源获取
- Indygreg 的可移植 Python 构建 用于 CPython
- PyPy.org 用于 PyPy
您也可以将工具链获取到特定位置。在这种情况下,解释器不会存储在 Rye 通常查询它的地方,而是存储在特定位置。除非手动注册,否则 Rye 将无法使用它。然而,这对于调试或高级设置很有用。
rye toolchain fetch [email protected] --target-path=my-interpreter
如果您想在不安装 rye 的情况下使用 rye 解释器获取,您可能需要导出 RYE_NO_AUTO_INSTALL
环境变量并将其设置为 1
,否则安装程序将会启动。
注册工具链
此外,可以使用 rye toolchain register
命令注册外部工具链。
rye toolchain register /path/to/python
工具链的名称是根据解释器选择的。例如,链接常规 cpython 安装将被称为 cpython@version
,而链接 pypy 将显示为 pypy@version
。从 Rye 0.5.0 开始,如果它是调试构建,则会将 -dbg
附加到工具链的名称。要覆盖名称,您可以传递 --name
。
rye toolchain register --name=custom /path/to/python
删除工具链
要删除已获取的工具链,请运行 rye toolchain remove
。请注意,这也适用于链接的工具链。
rye toolchain remove [email protected]
警告
删除正在使用的工具链将导致引用它的虚拟环境损坏。
构建信息
在 0.31.0 中新增
在 Rye 0.31.0 之前,Python 安装是使用构建信息获取的。您可以看到这一点,因为 ~/.rye/py/INTERPRETER
中的文件夹结构略有不同。您不会在 [email protected]/bin/python3
中找到它,而是会发现一个额外的 install
文件夹([email protected]/install/bin/python3
)以及包含中间构建输出的 build
文件夹。从 0.31.0 开始,默认情况下会删除构建信息。如果您想恢复它,您可以使用 --build-info
显式获取,也可以将 behavior.fetch-with-build-info
配置标志设置为 true。
rye config --set-bool behavior.fetch-with-build-info=true