前言
我们在开发项目时经常会进行导包有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: 按钮全部勾选
接下来我们查看演示效果