前言
我們在開發項目時經常會進行導包有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: 按鈕全部勾選

接下來我們查看演示效果