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