
ruff 本身不支持在 ruff format 中排序 import,需配合 ruff check --select i --fix 单独执行 import 排序,再运行格式化命令,实现与 isort + black 类似的双步自动化流程。
ruff 本身不支持在 ruff format 中排序 import,需配合 ruff check --select i --fix 单独执行 import 排序,再运行格式化命令,实现与 isort + black 类似的双步自动化流程。
Ruff 自 2023 年起将代码格式化(ruff format)与代码检查(ruff check)拆分为两个独立子命令。其中,导入排序(import sorting)属于 linting 能力范畴,由 ruff check 提供,而非格式化器。这意味着即使你习惯用 ruff format . 替代 black,也无法通过该命令完成 import 排序——这与 isort 的核心功能对应。
要完全替代 isort,推荐使用以下两步组合命令(按顺序执行):
ruff check --select I --fix . ruff format .
- --select I 表示仅启用所有以 I 开头的规则(如 I001 未排序导入、I002 缺失必需空行等),精准聚焦 import 整理;
- --fix 启用自动修复,无需人工干预;
- 两步可安全串联(例如 ruff check --select I --fix . && ruff format .),适用于 CI/CD 或 pre-commit 钩子。
⚠️ 注意事项:
- 确保 Ruff 版本 ≥ v0.5.0(推荐 ≥ v0.6.0),早期版本中 import 规则可能未默认启用或行为略有差异;
- 若项目无配置文件(如 ruff.toml 或 pyproject.toml),上述命令仍可开箱即用,完美适配小型项目场景;
- 如需自定义排序逻辑(如按字母顺序、分组策略、第三方/标准库/本地模块顺序),需创建配置文件并设置 [tool.ruff.isort] 下的选项(例如 known-first-party = ["myapp"]),否则使用 Ruff 默认的 isort 兼容策略。
总结:Ruff 不追求“一命令全能”,而是通过职责分离提供更可控、可组合的开发体验。用 ruff check --select I --fix 替代 isort,再以 ruff format 完成其余格式化,既轻量又可靠,是现代 Python 小型项目的理想选择。










