一、介绍
isort是一个实用的Python库,用于按照字母表顺序对imports进行排序,并自动按类型(标准库/第三方库/自己的模块/.......)划分部分。它为各种编辑器提供了命令行程序、python库和插件以快速对所有导入进行排序。它需要python3.7+才能运行,但也支持格式化python2代码。
先看官网提供的例子,了解isort的魅力之处
# Before isort
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格式化后
# 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")
二、安装
安装isort跟安装其他第三库的方式是一样,只需在命令行中输入:
pip install isort
三、使用
1、特定文件
示例:未使用isort时的代码文件learning.py
①方法一:在文件的路径下新建一个py文件,运行成功后即可将对应的文件导入模块进行排序
②方法二:在命令行使用命令
isort learning.py
通过上述操作即可获取排序后的文件
2、递归目录
使用以下指令可以对目录下的所有文件导入模块进行排序
isort .
或
isort **/*.py
3、查看建议的更改而不修改文件
isort xxx.py --diff
示例
四、vscode
在vscode进行配置,保存时即对导入模块进行排序
1、安装isort,方法见二
2、对vscode的setting进行配置
①使用快捷键Ctrl + Shift + P,搜索Preferences: Open Settings(UI)
②搜索OnSave,点击Edit in setting.json
③修改setting.json的配置
五、操作注释
在单个文件中配置isort流的最基本方法是操作注释。这些注释在解析过程中由isort解析器拾取和解释。
1、isort: skip_file:跳过整个文件
# isort: skip_file
import os
import sys
2、isort: skip
如果与导入语句放在同一行(或a的延续内),isort将不会对此导入进行排序
import b
import a # isort: skip 使用该指令后,前面的语句将不会被排序
3、isort: off
关闭isort解析。语句后的每一行都将保持不变地传递,直到注释或文件结束
import e
import f
# isort: off
import b
import a
4、isort: on
重新打开isort解析。这只有在文件中存在更高的注释时才有意义,允许在其他排序的导入块周围拥有未排序的导入块。
import e
import f
# isort: off
import b
import a
# isort: on
import c
import d
5、isort:split
告知isort当前排序部分已完成,并且所有将来的导入都属于新的排序分组。
import e
import f
# isort: split
import a
import b
import c
import d
6、dont-add-imports
不自动将导入添加到此文件,即使设置了--add-imports也是如此
7、dont-add-import
不自动添加特定的导入,即使--add-imports也是如此
8、isort -a
向所有文件添加导入
isort -a "from __future__ import print_function" *.py
仅将导入添加到已导入的文件
isort -a "from __future__ import print_function" --append-only *.py
9、isort --rm
从多个文件中删除导入
isort --rm "os.system" *.py