Rye 是由 Flask 和 Pydantic 的作者 Armin Ronacher 发起的 Python 一站式管理工具。它的核心理念是无痛 Python,旨在解决 Python 环境管理中长期存在的碎片化问题(如 pyenv、poetry、pipenv 各自为政的情况)。
1.为什么选择 Rye?
Rye 采用了 “Cargo-like” 的哲学(模仿 Rust 的包管理器 Cargo),具有以下优势:
- 内置 Python 管理: 自动下载并管理 Python 版本,你不需要提前安装
pyenv。
- 极速安装: 底层基于 uv(目前最快的 Python 包解析器),速度远超传统的
pip 或 poetry。
- 标准化: 遵循 PEP 621 标准,直接在
pyproject.toml 中配置项目。
- 一站式: 一个工具解决 Python 版本、虚拟环境、依赖管理、打包发布所有流程。
2.核心操作流程
2.1初始化项目
进入文件夹后运行,这会生成 pyproject.toml 等基础文件。
1 2
| rye init my-project cd my-project
|
2.2指定 Python 版本
Rye 会根据你的要求自动下载对应的 Python 工具链(Toolchain)。
2.3添加依赖
Rye 支持生产依赖和开发依赖(dev dependencies)。
1 2
| rye add requests rye add pytest --dev
|
2.4同步环境
这是最重要的步骤。 add 命令只是修改了配置文件,运行 sync 才会真正创建虚拟环境并安装包。
3.项目结构对比
使用 Rye 后,你的项目结构通常如下:
| 文件/目录 |
说明 |
.python-version |
记录当前项目锁定的 Python 版本。 |
pyproject.toml |
标准化的项目配置和依赖声明。 |
requirements.lock |
自动生成的锁定文件(类似 package-lock.json),确保环境可复现。 |
.venv/ |
Rye 自动创建的虚拟环境。 |
4.进阶常用命令
- 运行脚本: 不需要手动
source .venv/bin/activate,直接使用:
- 全局安装工具: 类似
pipx,将工具安装在独立环境并暴露全局指令:
5.注意事项
- 与 uv 的关系: Rye 现在默认使用
uv 作为后端。如果你追求极致的简洁和速度,也可以直接查看 uv,它是 Rye 的精神续作,且目前由 Astral 团队全职维护。
- 环境变量: 安装后确保执行了
source "$HOME/.rye/env"(或将其加入你的 .zshrc / .bashrc),否则 rye 命令无法在终端直接使用。