Django(76)isort工具对import导入进行排序
前言
我们在开发项目时经常会进行导包有import *
格式的,还有from * import *
格式的,最后就会显示的很乱,那么有没有什么工具能对导包进行一键排序呢?答案是有的,使用isort
工具
isort介绍
isort
是一个 Python
实用库,用于按字母顺序对imports
导入进行排序,并自动分为部分和类型。它为各种编辑器提供命令行实用程序、Python库和插件,以快速对所有导入进行排序。它需要 Python 3.6+
才能运行,但也支持格式化 Python 2
代码。
作用展示
下面有一段比较混乱的代码如下:
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")
使用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")
安装命令
最普通的方式
pip install isort
安装支持requirements.txt
的方式
pip install isort[requirements_deprecated_finder]
安装支持Pipfile
的方式
pip install isort[pipfile_deprecated_finder]
安装支持以上2种根式的方式
pip install isort[requirements_deprecated_finder,pipfile_deprecated_finder]
使用poetry的安装方式
poetry add isort
配置信息
isort
有许多配置信息,这里我们围绕与black
包(代码格式化的第三方包)的配合
Black Compatibility
大多数情况下isort
都是与black
配合使用,我们只需将isort
配置中的profile
设置为black
对于正式使用isort
和black
的项目,建议在项目存储库根目录下的配置文件中设置black
配置文件。这样,它独立于用户如何调用isort(预提交、CLI或编辑器集成),black
配置文件将自动应用。
例如,您的pyproject.toml
文件如下所示
[tool.isort]
profile = "black"
Config Files
isort
支持各种标准配置格式,以允许将自定义快速集成到任何项目中。
pyproject.toml [preferred format]
[tool.isort]
profile = "hug"
src_paths = ["isort", "test"]
实战项目配置
演示项目以poetry
配置为例子
1.使用poetry安装
poetry add isort
2.在pyproject.toml中添加如下配置
[tool.isort]
profile = "black"
skip = ["migrations"]
因为是使用Django
框架,所以我们需要跳过migrations
目录
3.将 isort
配置为 PyCharm
的 external
工具,以便在代码开发时随时格式化导入排序
过程有2步,
1.配置File Watchers,为了每个文件保存时运行isort
2.配置external tools
- 确保已安装
File Watchers
插件 - 打开
Preferences or Settings
->Tools
->File Watchers
,点击+按钮,创建一个新的watcher- Name: isort
- File Type: Python
- Scope: Project Files
- Program: $PyInterpreterDirectory$/isort 注意:此示例使用的虚拟环境,如果你没有使用虚拟环境,可通过which isort查找到路径并填写真实的路径
- Arguments: --profile black $FilePath$
- Output paths to refresh: $FilePath$
- Working directory: $ProjectFileDir$
- In Advanced Options
- 取消勾选 "Auto-save edited files to trigger the watcher"
- 取消勾选 "Trigger the watcher on external changes"

- 打开
Preferences or Settings
->Tools
->External Tools
,点击+按钮,创建一个新的tools- Name: isort
- Description: Sort imports in current file
- Program: $PyInterpreterDirectory$/isort 注意:此示例使用的虚拟环境,如果你没有使用虚拟环境,可通过which isort查找到路径并填写真实的路径
- Arguments: --profile black $FilePath$
- Working directory: $ProjectFileDir$
- In Advanced Options: 按钮全部勾选

接下来我们查看演示效果
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库