Isort 自動整理 import 的超實用工具教程

isort 是一個Python的實用程序/庫,它會按字母順序對導入(import)的庫進行排序,并自動分組。它提供多種使用方式,包括命令行、Python調(diào)用等。
它基于Python 3.6+實現(xiàn),但也支持格式化Python 2代碼。

在使用 isort 格式化你的 import 之前,你的代碼可能是長這樣的:
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")雜亂無章的格式瞬間變得井然有序,可見這是一款多么優(yōu)秀的整理工具,下面就來介紹這個工具的安裝及使用過程,及進階用法。
1.準備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點:Python 編程的最好搭檔—VSCode 詳細指南。
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install isort如果你需要讓他支持對 requirements.txt 的整理,請這樣安裝:
pip install isort[requirements_deprecated_finder]2.使用 isort 整理你的python引用
isort 有2種使用方法,一種是從命令行直接針對py文件進行整理、另一種是在Python內(nèi)導入 isort 進行整理。
命令行整理
要在特定文件上運行 isort,請在命令行執(zhí)行以下操作:
isort mypythonfile.py mypythonfile2.py
# 或
python -m isort mypythonfile.py mypythonfile2.py要對本文件夾遞歸進行isort整理,請執(zhí)行以下操作:
isort .
# 或
python -m isort .要查看更改建議的而不直接應用它們,請執(zhí)行以下操作:
isort mypythonfile.py --diff如果你要對項目自動運行isort,但是希望僅在未引入語法錯誤的情況下應用更改:
isort --atomic .(注意:這在默認情況下是禁用的,因為它阻止了 isort 去整理不同版本的Python代碼。)
從Python內(nèi)部:
import isort
isort.file("pythonfile.py")或者:
import isort
sorted_code = isort.code("import b\nimport a\n")3. 智能平衡格式化
從 isort 3.1.0 開始,添加了對平衡多行導入的支持。啟用此選項后,isort 將動態(tài)地將導入長度更改為生成最平衡網(wǎng)格的長度,同時保持低于定義的最大導入長度。
開啟了平衡導入的格式化:
from __future__ import (absolute_import, division,
print_function, unicode_literals)未開啟平衡的格式化:
from __future__ import (absolute_import, division, print_function,
unicode_literals)要啟用此設置, 在你的配置設置 balanced_wrapping = True 或 通過命令行添加 -e 參數(shù)執(zhí)行整理。
4.跳過某個import
要使 isort 忽略單個 import,只需在包含文本的導入行的末尾添加注釋 isort:skip ,如下:
import module # isort:skip或者:
from xyz import (abc, # isort:skip
yo,
hey)
要使 isort 跳過整個文件,只需添加 isort:skip_file 到文件的開頭注釋中:
"""
my_module.py
Best module ever
isort:skip_file
"""
import b
import a這個工具還是相當方便的,尤其是針對一些雜亂無章、多年沉淀下來的項目代碼的 import 進行整理的時候,它會變得非常香。
有需要的小伙伴可以趕快試一下。
我們的文章到此就結束啦,如果你喜歡今天的Python 實戰(zhàn)教程,請持續(xù)關注Python實用寶典。
有任何問題,可以在公眾號后臺回復:加群,回答相應紅字驗證信息,進入互助群詢問。
原創(chuàng)不易,希望你能在下面點個贊和在看支持我繼續(xù)創(chuàng)作,謝謝!
點擊下方閱讀原文可獲得更好的閱讀體驗
Python實用寶典 (pythondict.com)
不只是一個寶典
歡迎關注公眾號:Python實用寶典
