page contents

isort:把你代码中的 import 按类型和字母序分组、对齐、换行,自动处理重复和多次导入

isort = import sort(就是把 import 排序)。它是一个 Python 工具库,会把你的 import 按类型和字母序分组、对齐、换行,自动处理重复和多次导入,配合 black 使用也很友好。官方要求 Python 3.9+ 运行,但能格式化 Python2 的代码文本。

attachments-2025-12-fRQLeLpo694b4c9ddd9b4.pngisort = import sort(就是把 import 排序)。它是一个 Python 工具库,会把你的 import 按类型和字母序分组、对齐、换行,自动处理重复和多次导入,配合 black 使用也很友好。官方要求 Python 3.9+ 运行,但能格式化 Python2 的代码文本。

它解决了哪些痛点(真心实意)

• 手动整理 import 太耗时间:尤其在大项目里,改一处引用,可能导致 import 顺序乱。isort 一键搞定。

• 团队风格不统一:不同人写代码风格不同,PR 里常被要求“调整 imports”,isort 用于 pre-commit 就能强制一致。

• 易读性差:把标准库、第三方、项目内部分组后,代码阅读体验改善很多。

• 重复导入/多行导入排版糟糕:自动合并同一模块的多次导入、按行宽优雅换行。

• 与 CI 集成校验:isort 的 --check-only 能让 CI 报错提醒格式不符合。

安装很简单

• 推荐:pip install isort

• 支持 pre-commit(官方支持),也有各编辑器的插件(VSCode、PyCharm 等都有第三方或官方集成)。

举例安装命令:

pip install isort

基本用法

• 对单个文件:

isort myfile.py

• 对整个项目(递归):

isort .

# 如果 shell 支持 globstar,等同于 isort **/*.py

• 先看差异、不直接改文件:

isort myfile.py --diff

• 原子性修改(只有改动不会引入语法错才应用):

isort --atomic .

• 在 Python 代码里调用:

import isort

isort.file("pythonfile.py")

sorted_code = isort.code("import b\nimport a\n")

• 校验(CI 常用):

isort **/*.py -c -v

# -c / --check-only:只检查,不修改;返回非零则报错,CI 可据此 fail

一个 before/after 小样例

Before:

from my_lib import Object

import os

from my_lib import Object3

from my_lib import Object2

import sys

from third_party import lib15, lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8, lib9, lib10, lib11, lib12, lib13, lib14

import sys

from __future__ import absolute_import

from third_party import lib3

print("Hey")

print("yo")

After(isort 做的事):

from __future__ import absolute_import


import os

import sys


from third_party import (lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8,

                         lib9, lib10, lib11, lib12, lib13, lib14, lib15)


from my_lib import Object, Object2, Object3


print("Hey")

print("yo")

你看到了没?分组、排序、重复合并、漂亮换行,瞬间清爽。

优点

• 节省时间、自动化:把重复、繁琐的工作自动化了。

• 团队一致性:结合 pre-commit/CI,能强制统一代码风格。

• 灵活可配置:几乎所有细节都能通过 config 调整。

• 编辑器支持和库级别调用:既能命令行用,也能当库在脚本/插件里调用。

• 与 black 等格式化工具兼容(有对应的指南和选项)。

缺点 & 注意事项

• 版本兼容:官方运行需要 Python 3.9+(不过可以处理旧代码文本),在非常老的环境里要注意。

• 极少数场景下可能和手写风格冲突:比如你特意用某种奇怪的 import 排列做视觉分隔,isort 会改掉它。

• 对大型 monorepo 的极端边界情况,配置和性能需要测试(通常没大问题,但别忘了先试运行)。

小结

isort 不是花里胡哨的工具,它干一件事,而且干得很好:自动整理 imports,让你的代码看起来更统一、更专业,也减少 PR 的“nit-pick”。对团队来说,把 isort 放进 pre-commit 或 CI,能瞬间减少大量无意义的代码 review 折腾。缺点就是需要一点配置和团队沟通,但换来的维护成本下降、审查时间减少,通常很值得。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-12-24 10:14
  • 阅读 ( 53 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1783 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1783 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章