Ruff 本身不支持在 ruff format 中排序导入,需结合 ruff check --select I --fix(调用 linter 的 import-sorting 规则)与 ruff format 分步执行,实现等效于 isort + black 的代码整理流程。
ruff 本身不支持在 `ruff format` 中排序导入,需结合 `ruff check --select i --fix`(调用 linter 的 import-sorting 规则)与 `ruff format` 分步执行,实现等效于 isort + black 的代码整理流程。
Ruff 将代码格式化(format)与代码检查/修复(check)职责明确分离:ruff format 专注于 PEP 8 兼容的空白、换行、缩进等结构化格式,不处理 import 排序;而 import 排序由 linter 模块中的 I 类规则(如 I001, I002 等)负责,需通过 ruff check --select I --fix 显式触发。
✅ 正确用法(适用于无配置文件的小项目):
# 第一步:自动排序并修复所有 import 语句(等效 isort --profile black) ruff check --select I --fix . # 第二步:统一格式化(等效 black) ruff format .
? 提示:
- --select I 表示仅启用所有以 I 开头的 import 相关规则(如 I001:import 在模块 docstring 后应空一行;I002:import 应按字母顺序分组排序);
- --fix 自动应用可修复的变更(包括重排序、插入空行、合并重复 import 等);
- 若希望一次完成两步操作,可封装为 shell 别名或脚本(例如 alias ruff-sort='ruff check --select I --fix && ruff format');
- 虽无配置文件也可运行,但建议在项目根目录添加 pyproject.toml 启用 isort 兼容行为(如 profile = "black"),确保排序风格与团队一致。
⚠️ 注意事项:
- ruff check --select I 默认不会修改非 import 行为,安全可控;
- 若项目中已存在 .isort.cfg 或 pyproject.toml 中的 [tool.isort] 配置,Ruff 不会自动读取——需显式通过 ruff check 的 --config 参数指定,或迁移配置至 [tool.ruff] 下的 isort section;
- 排序结果默认遵循 Black 风格(例如 from ... import ... 单独成行、标准库/第三方/本地库三段式分组),无需额外参数。
综上,Ruff 以“检查即修复”的理念替代 isort,无需安装额外工具,轻量、快速、与 formatter 解耦清晰,是小型 Python 项目的理想选择。










