Ruff 中如何替代 isort 实现导入语句自动排序?
Ruff的import排序通过`ruffcheck--selectI--fix`执行,再配合`ruffformat`完成两步自动化,替代isort和black。命令可串联集成到CI/CD,需保证Ruff版本不低于v0.5.0。
Ruff 本身不支持在ruff format中排序 import,需要配合ruff check --select I --fix单独执行 import 排序,再运行格式化命令,这才能实现与 isort + black 类似的双步自动化流程。
Ruff 本身不支持在 ruff format 中排序 import,需要配合 ruff check --select I --fix 单独执行 import 排序,再运行格式化命令,这才能实现与 isort + black 类似的双步自动化流程。
从 2023 年开始,Ruff 就把代码格式化(ruff format)和代码检查(ruff check)拆成了两个独立的子命令。这里的关键点在于:导入排序(import sorting)属于 linting 的范畴,由 ruff check 负责,而不是格式化器。换句话说,即使你习惯了用 ruff format . 来替代 black,也别指望它能顺手搞定 import 排序——这活儿,isort 才是正主,而 Ruff 的对应能力在 check 那边。
那么,要完全替代 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 小型项目非常理想的选择。
IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。
JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。
JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。
JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,
PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,
PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,













