isort で Python の import 順序を PEP8 準拠に修正する
Python で import
するライブラリの順序は PEP8 で決められています。
import文 は次の順番でグループ化すべきです:
- 標準ライブラリ
- サードパーティに関連するもの
- ローカルな アプリケーション/ライブラリ に特有のもの
isort を使うと Python で import
するライブラリの順序を並び替えてくれます。
インストール
pip
でインストールします。
サンプルスクリプト
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.
|
修正箇所が無い場合は何も表示されません。
修正結果を標準出力へ表示する
修正結果を標準出力へ表示する場合は -d
または --stdout
オプションを指定します。 この場合、ファイル自体は修正されません=書き換わりません。
1
2
3
4
5
6
7
8
9
10
11
12
13 | $ 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
オプションを指定します。 この場合もファイル自体は修正されません=書き換わりません。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | $ 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
|
これでファイルが修正されました=書き換えられました。
1
2
3
4
5
6
7
8
9
10
11
12
13 | $ 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!')
|