Ruff:用 Rust 重写的 Python 代码检查和格式化工具,快了几十倍
Ruff:用 Rust 重写的 Python 代码检查和格式化工具,快了几十倍
Ruff 是一个用 Rust 编写的 Python 代码检查(linter)和格式化(formatter)工具,目前在 GitHub 上已经拿到了近 48k 的 Star。

Python 社区长期依赖 Flake8、Black、isort 等工具来检查代码风格和格式化代码,每个工具各管一块,配置零散,速度也一般。Ruff 把这些功能整合到了一个工具里,用 Rust 重写了所有规则引擎,速度比传统工具快 10 到 100 倍。
在 CPython 代码库上的基准测试中,Ruff 从头到尾跑完一遍的时间极短,而同等条件下 Flake8 需要 20 秒以上。FastAPI 作者 Sebastián Ramírez 说过,Ruff 快到他偶尔会故意写个 bug 来确认它确实跑过了。Dagster 的联合创始人 Nick Schrock 测过,在他们 25 万行代码的仓库上,pylint 需要 2 分半,Ruff 只用了 0.4 秒。

核心能力
Ruff 内置了超过 900 条 lint 规则,原生重新实现了 Flake8、isort、pyupgrade、autoflake 等数十个插件的功能。同时它还能当格式化工具使用,行为与 Black 兼容。也就是说,原来需要装五六个工具配五套配置,现在一个 Ruff 就够了。
它支持自动修复,比如删掉未使用的 import 语句、升级过时的 Python 语法。还内置了缓存机制,只分析改动过的文件,进一步节省时间。
支持的项目
Ruff 已经被大量主流开源项目采用:FastAPI、Pandas、SciPy、PyTorch、Hugging Face Transformers、Apache Airflow、Home Assistant、LangChain、Streamlit、pytest 等。从 Web 框架到机器学习库,从数据工具到自动化平台,覆盖面很广。
安装方式
Ruff 支持多种安装方式。最简单的是用 uv:
uv tool install ruff@latest
也可以用 pip:
pip install ruff
如果不想全局安装,可以直接用 uvx 临时运行,不需要预先安装:
uvx ruff check
uvx ruff format
从 0.5.0 版本开始,Ruff 还提供了独立安装脚本,macOS 和 Linux 上一条命令搞定:
curl -LsSf https://astral.sh/ruff/install.sh | sh
使用方法
Ruff 的命令行接口很直白。检查代码:
ruff check path/to/code/
格式化代码:
ruff format path/to/code/
也可以配合 pre-commit 使用,在每次提交前自动检查和格式化。还能作为 VS Code 插件或 GitHub Action 接入 CI 流程。
配置方式
Ruff 通过 pyproject.toml 或 ruff.toml 进行配置。不写配置文件也能直接用,默认启用 Flake8 的 F 规则和部分 E 规则。如果需要自定义,配置项包括目标 Python 版本、行长度、启用的规则集等,结构清晰。Ruff 还支持层级配置和级联配置,在monorepo 中可以对不同子目录设置不同规则。
Ruff 由 Astral 团队开发维护,这个团队也是 uv(Python 包管理器)和 ty(Python 类型检查器)的作者。
。
Ruff 由 Astral 团队开发维护,这个团队也是 uv(Python 包管理器)和 ty(Python 类型检查器)的作者。
更多推荐



所有评论(0)