閱讀最新文件 - 瀏覽 GitHub 程式碼儲存庫
對您的進口進行分類,這樣您就不必這樣做。
isort 是一個 Python 實用程式/函式庫,用於按字母順序對導入進行排序,並按類型自動分成部分。它為各種編輯器提供命令列實用程式、Python 庫和插件,以快速對所有導入進行排序。它需要 Python 3.8+ 才能運行,但也支援格式化 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" )
排序後:
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" )
安裝 isort 非常簡單:
pip install isort
從命令列:
要在特定文件上運行:
isort mypythonfile.py mypythonfile2.py
遞迴應用:
isort .
如果啟用了 globstar, isort .
相當於:
isort ** / * .py
要查看建議的更改而不應用它們:
isort mypythonfile.py --diff
最後,要對專案自動執行 isort,僅在不引入語法錯誤的情況下套用變更:
isort --atomic .
(注意:預設情況下停用此功能,因為它會阻止 isort 針對使用不同版本的 Python 編寫的程式碼運行。)
從 Python 內部:
import isort
isort . file ( "pythonfile.py" )
或者:
import isort
sorted_code = isort . code ( "import b n import a n " )
已經編寫了幾個插件,可以在各種文字編輯器中使用 isort。您可以在 isort wiki 上找到它們的完整清單。此外,我將熱情地接受包含其他文字編輯器插件的拉取請求,並在收到通知後為其添加文件。
您會注意到上面的“multi_line_output”設定。此設定定義了 from 導入超出 line_length 限制時如何換行,並且有 12 個可能的設定。
若要變更常數縮排的顯示方式 - 只需使用以下可接受的格式變更縮排屬性:
例如:
" "
相當於4。
對於使用括號的匯入樣式,您可以使用include_trailing_comma
選項(預設為False
)控制是否在上次匯入後包含尾隨逗號。
從 isort 3.1.0 開始,新增了對平衡多行導入的支援。啟用此功能後,isort 將動態地將導入長度變更為產生最平衡網格的長度,同時保持低於定義的最大導入長度。
例子:
from __future__ import ( absolute_import , division ,
print_function , unicode_literals )
將生成而不是:
from __future__ import ( absolute_import , division , print_function ,
unicode_literals )
若要啟用此功能,請在配置中將balanced_wrapping
設定為True
或將-e
選項傳遞到命令列實用程式中。
isort 提供的設定選項幾乎可以改變導入的組織、排序或分組方式的各個方面。
按一下此處查看所有這些選項的概述。
若要讓 isort 忽略單一導入,只需在包含文字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
isort 可以運行或設定為自動新增/刪除導入。
請參閱此處的完整指南。
--check-only
選項isort 也可用於透過使用-c
運行程式碼來驗證程式碼格式是否正確。任何包含錯誤排序和/或格式匯入的檔案都會輸出到stderr
。
isort ** / * .py -c -v
SUCCESS: /home/timothy/Projects/Open_Source/isort/isort_kate_plugin.py Everything Looks Good !
ERROR: /home/timothy/Projects/Open_Source/isort/isort/isort.py Imports are incorrectly sorted.
可以使用此功能的一個很好的地方是使用預先提交 git hook,例如 @acdha 的這個:
https://gist.github.com/acdha/8717683
這有助於確保整個專案的程式碼品質達到一定水準。
isort 提供了一個鉤子函數,可以整合到您的 Git 預提交腳本中,以便在提交之前檢查 Python 程式碼。
更多資訊請點這裡。
安裝後,isort 啟用setuptools
指令來檢查專案宣告的 Python 檔案。
更多資訊請點這裡。
將此徽章放在儲存庫的頂部,讓其他人知道您的專案使用 isort。
對於 README.md:
[ ![ Imports: isort ] ( https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 )] ( https://pycqa.github.io/isort/ )
或 README.rst:
.. image :: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
:target: https://pycqa.github.io/isort/
若要報告安全漏洞,請使用 Tidelift 安全聯絡人。 Tidelift 將協調修復和揭露。
isort 只是代表導入排序。它最初被稱為“sortImports”,但是我厭倦了輸入額外的字符,並意識到camelCase不是Pythonic。
我寫 isort 是因為在我曾經工作過的一個組織中,有一天經理進來並決定所有程式碼都必須按字母順序排序導入。程式碼庫非常龐大——他想讓我們手工完成。然而,身為程式設計師,我懶得花 8 個小時漫無目的地執行一個功能,但又不太懶得花 16 個小時來自動化它。我獲得了開源 sortImports 的許可,我們就在這裡:)
透過 Tidelift 訂閱獲得專業支持
Tidelift 訂閱中提供 isort 的專業支援。 Tidelift 為軟體開發團隊提供了購買和維護軟體的單一來源,並由最了解軟體的專家提供專業級保證,同時與現有工具無縫整合。
謝謝,我希望你發現這很有用!
〜蒂莫西·克羅斯利