Python で import
するライブラリの順序は PEP8 で決められています。
import文 は次の順番でグループ化すべきです:
- 標準ライブラリ
- サードパーティに関連するもの
- ローカルな アプリケーション/ライブラリ に特有のもの
isort を使うと Python で import
するライブラリの順序を並び替えてくれます。
インストール
pip
でインストールします。
pip install isort
サンプルスクリプト
example.py
という名前で下記のサンプルスクリプトを用意しました。
import boto3
import lib2
import lib1
import os
import sys
import calendar
from functools import singledispatch
from datetime import datetime
print('Hello, World!')
修正箇所があるか、確認する (修正はしない)
「修正箇所があるか、確認はする」が「修正はしない」という場合は -c
または --check-only
オプションを指定します。 修正箇所がある場合は以下のように表示されます。
$ isort -c example.py
ERROR: /home/user/example.py Imports are incorrectly sorted.
修正箇所が無い場合は何も表示されません。
$ isort -c test1.py
$
修正結果を標準出力へ表示する
修正結果を標準出力へ表示する場合は -d
または --stdout
オプションを指定します。 この場合、ファイル自体は修正されません=書き換わりません。
$ isort -d example.py
import calendar
import os
import sys
from datetime import datetime
from functools import singledispatch
import boto3
import lib1
import lib2
print('Hello, World!')
修正結果を diff 形式で表示する
修正結果を diff 形式で表示する場合は -df
または --diff
オプションを指定します。 この場合もファイル自体は修正されません=書き換わりません。
$ isort -df example.py
--- /home/user/example.py:before 2020-02-12 09:26:12.903143
+++ /home/user/example.py:after 2020-02-12 09:31:20.943014
@@ -1,10 +1,12 @@
-import boto3
-import lib2
-import lib1
+import calendar
import os
import sys
-import calendar
+from datetime import datetime
from functools import singledispatch
-from datetime import datetime
+
+import boto3
+
+import lib1
+import lib2
print('Hello, World!')
ファイルを修正する
ファイル自体を修正する場合はオプション無しで実行します。
$ isort example.py
Fixing /home/user/example.py
これでファイルが修正されました=書き換えられました。
$ cat example.py
import calendar
import os
import sys
from datetime import datetime
from functools import singledispatch
import boto3
import lib1
import lib2
print('Hello, World!')
コメント