前言
我們在開發項目時經常會進行導包有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: 按鈕全部勾選
接下來我們查看演示效果

