Django(76)isort工具對import導入進行排序


前言

我們在開發項目時經常會進行導包有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
 
對於正式使用isortblack的項目,建議在項目存儲庫根目錄下的配置文件中設置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 配置為 PyCharmexternal 工具,以便在代碼開發時隨時格式化導入排序
過程有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: 按鈕全部勾選

接下來我們查看演示效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM