前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快看,Isort 自动整理 import 的超实用工具教程

快看,Isort 自动整理 import 的超实用工具教程

原创
作者头像
陈晨135
发布2021-12-27 15:37:20
9190
发布2021-12-27 15:37:20
举报
文章被收录于专栏:Python小课堂

isort 是一个Python的实用程序/库,它会按字母顺序对导入(import)的库进行排序,并自动分组。它提供多种使用方式,包括命令行、Python调用等。

它基于Python 3.6+实现,但也支持格式化Python 2代码。

在使用 isort 格式化你的 import 之前,你的代码可能是长这样的:

代码语言:javascript
复制
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 格式化后的代码是这样的:

代码语言:javascript
复制
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")

杂乱无章的格式瞬间变得井然有序,可见这是一款多么优秀的整理工具,下面就来介绍这个工具的安装及使用过程,及进阶用法。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:

请选择以下任一种方式输入命令安装依赖: 1. Windows 环境 打开 Cmd (开始-运行-CMD)。 2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。 3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

代码语言:javascript
复制
pip install isort

如果你需要让他支持对 requirements.txt 的整理,请这样安装:

代码语言:javascript
复制
pip install isort[requirements_deprecated_finder]

2.使用 isort 整理你的python引用

isort 有2种使用方法,一种是从命令行直接针对py文件进行整理、另一种是在Python内导入 isort 进行整理。

命令行整理

要在特定文件上运行 isort,请在命令行执行以下操作:

代码语言:javascript
复制
isort mypythonfile.py mypythonfile2.py
# 或
python -m isort mypythonfile.py mypythonfile2.py

要对本文件夹递归进行isort整理,请执行以下操作:

代码语言:javascript
复制
isort .
# 或
python -m isort .

要查看更改建议的而不直接应用它们,请执行以下操作:

代码语言:javascript
复制
isort mypythonfile.py --diff

如果你要对项目自动运行isort,但是希望仅在未引入语法错误的情况下应用更改:

代码语言:javascript
复制
isort --atomic .

(注意:这在默认情况下是禁用的,因为它阻止了 isort 去整理不同版本的Python代码。)

从Python内部

代码语言:javascript
复制
import isort
isort.file("pythonfile.py")

或者:

代码语言:javascript
复制
import isort
sorted_code = isort.code("import b\nimport a\n")

3. 智能平衡格式化

从 isort 3.1.0 开始,添加了对平衡多行导入的支持。启用此选项后,isort 将动态地将导入长度更改为生成最平衡网格的长度,同时保持低于定义的最大导入长度。

开启了平衡导入的格式化:

代码语言:javascript
复制
from __future__ import (absolute_import, division,
                        print_function, unicode_literals)

未开启平衡的格式化:

代码语言:javascript
复制
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

要启用此设置, 在你的配置设置  balanced_wrappingTrue 或 通过命令行添加 -e  参数执行整理。

4.跳过某个import

要使 isort 忽略单个 import,只需在包含文本的导入行的末尾添加注释  isort:skip ,如下:

代码语言:javascript
复制
import module # isort:skip

或者:

代码语言:javascript
复制
from xyz import (abc, # isort:skip
                 yo,
                 hey)

要使 isort 跳过整个文件,只需添加  isort:skip_file  到文件的开头注释中:

代码语言:javascript
复制
"""
my_module.py
Best module ever

isort:skip_file
"""

import b
import a

这个工具还是相当方便的,尤其是针对一些杂乱无章、多年沉淀下来的项目代码的 import 进行整理的时候,它会变得非常香。

有需要的小伙伴可以赶快试一下。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档