背景
PEP8 有建議 Python 模塊中 import 的導入順序
- 首先引入標准庫里的模塊
- 然后引入第三方模塊
- 最后引入自己的模塊
屬於同一個部分的 import 語句按字母順序排列
isort 的作用
可以自動將 Python 模塊中的 import 進行排序,並自動按類型划分以滿足上面說的 PEP8 規范
安裝 isort
pip install isort
實際效果
沒有 isort 之前
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 命令
isort isort_test.py
isort 之后
from __future__ import absolute_import import os import sys from my_lib import Object, Object2, Object3 from third_party import ( lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8, lib9, lib10, lib11, lib12, lib13, lib14, lib15, ) print("Hey") print("yo")
可讀性和可維護性提高不要太多!
isort 的具體使用
指定文件
isort mypythonfile.py mypythonfile2.py
當前目錄所有文件
isort .
查看修改建議,但不會修改文件
isort mypythonfile.py --diff
常用命令行參數
--check-only、-c
- 使用 -c 運行代碼來驗證代碼的格式是否正確
- 任何包含錯誤排序和/或格式導入的文件都將輸出到 stderr
--skip、-s
跳過指定文件,可以是文件名、目錄名、文件路徑
--force-single-line-imports
強制所有 import 都出現在單行上
官方文檔
實在太多命令行參數了,用到再查吧,默認不用參數也完全夠用了
https://pycqa.github.io/isort/docs/configuration/options.html