跳转至

Rye Python 项目管理

Rye 是由 Flask 作者 Armin Ronacher 创建的 Python 项目管理工具,后来交给了 Astral(uv 团队)维护。截至 2025 年 2 月,Rye 已停止开发并进入维护模式,官方推荐直接迁移到 uv 作为继任者。本文涵盖 Rye 完整使用方法及向 uv 迁移的详细指南。

核心知识点

知识点说明
工具定位Python 项目管理(Python 版本 + 依赖 + 虚拟环境一体化)
开发者Armin Ronacher → Astral(uv 团队)
当前状态维护模式(2025年2月停止开发),推荐迁移到 uv
核心优势统一工具链、自动管理 Python 版本、零配置
实现语言Rust(高性能)
继任工具uv(功能完全覆盖 Rye,速度更快)
配置文件pyproject.toml(与 uv 完全兼容)

白话解释

想象你买了一台新电脑,要写 Python 代码。通常你需要: 1. 先安装某个版本的 Python 2. 创建虚拟环境(python -m venv .venv) 3. 激活虚拟环境 4. 安装 pip 依赖 5. 手动管理 requirements.txt

Rye 把这一切合并成一个工具rye initrye addrye sync,它帮你自动管理 Python 版本和依赖,就像 Node.js 的 npm 一样。

安装配置

方式一:官方一键安装(推荐)

# Linux/macOS 安装 Rye
curl -sSf https://rye.astral.sh/get | bash

# 安装后重新加载 shell 配置
source "$HOME/.rye/env"  # 或重启终端

# 验证安装
rye --version  # 应输出 rye 0.x.x

方式二:直接安装 uv(官方推荐,替代 Rye)

# 安装 uv(Rye 的官方继任者)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 或通过 pip 安装
pip install uv

# 验证
uv --version  # 应输出 uv 0.x.x

方式三:Windows 安装

# Windows PowerShell 安装 Rye
winget install astral-sh.rye

# 或者安装 uv
winget install astral-sh.uv

配置 Rye

# 查看当前配置
rye config

# 设置默认的 Python 版本
rye config --set-bool behavior.use-uv=true  # 使用 uv 作为后端(更快)

# 设置自动安装 Python
rye config --set-bool behavior.global-python=true

基本使用

创建新项目

# 创建普通项目
rye init my-project               # 初始化项目目录
cd my-project

# 项目结构说明:
# my-project/
#   ├── pyproject.toml            # 项目配置文件(类似 package.json)
#   ├── .python-version           # 记录 Python 版本
#   ├── src/
#   │   └── my_project/           # 源代码目录
#   │       └── __init__.py
#   └── README.md

# 创建库项目(可发布到 PyPI 的包)
rye init my-lib --lib             # 创建库模板

# 创建不含 src 目录的扁平项目
rye init my-script --no-src       # 更简单的脚本项目

Python 版本管理

# 查看可用的 Python 版本
rye fetch --list                  # 列出所有可安装的 Python 版本

# 安装特定版本
rye fetch 3.12.3                  # 下载 Python 3.12.3

# 固定项目的 Python 版本
rye pin 3.12                      # 写入 .python-version 文件
rye pin 3.11.9                    # 精确版本

# 查看当前项目使用的 Python
rye run python --version          # 显示虚拟环境中的 Python 版本

依赖管理

# 添加生产依赖
rye add pandas                    # 添加最新版本
rye add "pandas>=2.0"             # 指定版本约束
rye add numpy scipy               # 一次添加多个

# 添加开发依赖(不打包到发布版本)
rye add pytest --dev              # 测试工具
rye add black ruff --dev          # 代码格式化和 lint 工具

# 移除依赖
rye remove pandas                 # 删除依赖

# 同步安装(根据 pyproject.toml 安装/更新所有依赖)
rye sync                          # 等价于 pip install -r requirements.txt

# 仅安装生产依赖(不安装 --dev 依赖)
rye sync --no-dev                 # 适合部署时使用

# 更新依赖到最新版本
rye lock --update-all             # 更新 lock 文件
rye sync                          # 根据新 lock 文件安装

运行命令

# 在虚拟环境中运行
rye run python script.py          # 运行 Python 脚本
rye run pytest                    # 运行测试
rye run python -m mymodule        # 运行模块

# 激活虚拟环境(传统方式)
. .venv/bin/activate              # Linux/macOS
.venv\Scripts\activate            # Windows

# 代码质量工具
rye fmt                           # 格式化代码(使用 ruff)
rye lint                          # 检查代码问题(使用 ruff)
rye test                          # 运行测试(使用 pytest)

pyproject.toml 详解

# 这是 Rye 项目的核心配置文件
[project]
name = "my-project"                    # 项目名称
version = "0.1.0"                      # 版本号
description = "A sample project"       # 描述
readme = "README.md"                   # README 文件
license = { text = "MIT" }            # 许可证
requires-python = ">=3.11"             # Python 版本要求
dependencies = [                       # 生产依赖列表
    "pandas>=2.0",
    "numpy>=1.24",
]

[tool.rye]
managed = true                         # 由 Rye 管理(标志位)
dev-dependencies = [                   # 开发依赖
    "pytest>=7.0",
    "ruff>=0.1",
    "black>=23.0",
]

[build-system]
requires = ["hatchling"]               # 构建工具
build-backend = "hatchling.build"

[tool.rye.scripts]
# 自定义脚本(类似 npm scripts)
start = "python src/my_project/main.py"   # rye run start
test = "pytest tests/"                     # rye run test
lint = "ruff check src/"                   # rye run lint

高级用法

全局工具管理

# 安装全局命令行工具(不污染项目环境)
rye tools install black            # 安装 black 格式化工具
rye tools install httpie           # 安装 http 命令行工具

# 查看已安装的全局工具
rye tools list

# 卸载全局工具
rye tools uninstall black

多工作区管理(Workspace)

# 在 pyproject.toml 中配置工作区(Monorepo 模式)
# 适合同时管理多个互相依赖的 Python 包

# pyproject.toml 根项目配置
[tool.rye.workspace]
members = ["packages/*"]           # 所有 packages/ 下的子目录都是工作区成员

私有 PyPI 源配置

# 在 pyproject.toml 中配置私有源
[[tool.rye.sources]]
name = "private-pypi"
url = "https://pypi.example.com/simple/"
type = "index"

# 或者使用国内镜像(加速下载)
[[tool.rye.sources]]
name = "tuna"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
type = "index"

发布包到 PyPI

# 构建发布包
rye build                         # 生成 dist/ 目录下的 wheel 和 sdist

# 发布到 PyPI
rye publish                       # 需要 PyPI 账号和 token

# 发布到测试 PyPI
rye publish --repository testpypi --yes

迁移到 uv(官方推荐)

Rye 已于 2025 年 2 月停止开发,官方强烈推荐迁移到 uv。

迁移步骤

# 第一步:安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 第二步:进入现有 Rye 项目
cd my-rye-project

# 第三步:直接运行 uv(它能识别 Rye 的 pyproject.toml)
uv sync                           # 等同于 rye sync

# 验证迁移成功
uv run python -c "import pandas; print('迁移成功!')"

配置文件调整

# 旧的 Rye 格式(dev-dependencies 在 tool.rye 下)
[tool.rye]
dev-dependencies = [
    "pytest>=7.0",
]

# 新的标准格式(推荐,uv 和其他工具通用)
[dependency-groups]
dev = [
    "pytest>=7.0",
]

# 私有源配置变化:从 tool.rye.sources 变为 tool.uv.indexes
[[tool.uv.indexes]]               # uv 的格式
name = "tuna"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"

常见报错

报错信息原因解决方案
rye: command not foundPATH 未配置运行 source "$HOME/.rye/env" 或重启终端
No Python version found未安装对应 Python 版本运行 rye fetch 3.12 安装
Lockfile mismatchlock 文件与 pyproject.toml 不一致运行 rye lock 重新生成
Package not found包名拼写错误或源不可用检查包名,或配置镜像源
Permission denied无写入权限sudo 或检查目录权限
SSL certificate error网络/证书问题配置代理或使用镜像源
Requires Python >=X.XPython 版本不满足要求运行 rye pin X.X 更换版本
build error: could not find...缺少系统依赖安装对应系统库(如 libssl-dev

速查表

# ===== Rye 常用命令 =====

# 项目管理
rye init <name>            # 创建新项目
rye sync                   # 同步安装所有依赖
rye sync --no-dev          # 仅安装生产依赖

# 依赖管理
rye add <pkg>              # 添加依赖
rye add <pkg> --dev        # 添加开发依赖
rye add "<pkg>>=1.0"       # 添加带版本约束的依赖
rye remove <pkg>           # 移除依赖
rye lock                   # 更新 lock 文件
rye lock --update-all      # 更新所有依赖到最新

# Python 版本
rye fetch --list           # 查看可用版本
rye fetch 3.12             # 下载 Python 3.12
rye pin 3.12               # 固定项目 Python 版本

# 运行
rye run <cmd>              # 在虚拟环境中运行
rye run python script.py   # 运行脚本
rye run pytest             # 运行测试

# 代码质量
rye fmt                    # 格式化(ruff)
rye lint                   # 检查(ruff)

# 全局工具
rye tools install <pkg>    # 安装全局工具
rye tools list             # 列出全局工具
rye tools uninstall <pkg>  # 卸载全局工具

# ===== Rye → uv 迁移速查 =====

# Rye 命令              uv 等效命令
# rye init              uv init
# rye add <pkg>         uv add <pkg>
# rye add <pkg> --dev   uv add <pkg> --dev
# rye remove <pkg>      uv remove <pkg>
# rye sync              uv sync
# rye run <cmd>         uv run <cmd>
# rye pin 3.12          uv python pin 3.12
# rye fetch 3.12        uv python install 3.12
# rye fmt               uvx ruff format .
# rye lint              uvx ruff check .
# rye build             uv build
# rye publish           uv publish

同类工具对比

工具定位速度Python管理依赖管理状态
Rye一体化管理支持支持维护模式
uv一体化管理(Rye继任)极快(Rust)支持支持活跃开发
pip包安装器一般不支持基础标准工具
Poetry依赖管理+发布一般不支持完整活跃
pipenv虚拟环境+依赖不支持支持活跃
conda科学计算环境支持支持活跃
pyenv仅 Python 版本管理-支持不支持活跃
venv仅虚拟环境不支持不支持标准库

结论:新项目直接用 uv,比 Rye 更快更强,且由同一团队维护。


参考:Rye 官方文档 | uv 迁移指南 | uv 文档 | 更新于 2026 年