Pythonでプログラムを実装する際に、モジュールを使用するにあたって最初にimport文を書く。
実は、このimport文にはPEP8に基づいて、正しい順序が定められているのはご存じだろうか?
あまり意識したことがない人も多いと思うので、詳細な並び順について紹介する。
- 標準ライブラリ
- サードパーティに関連するもの
- ローカルな アプリケーション・ライブラリ に特有のもの
ただ、正確な並び順は覚えていられないし、いちいち気にかけてコードを書くのも面倒くさいというのが本音。
プロジェクトの規模やシステムの規模によってモジュール数とともにimport文が増えていく。
複数人で開発・実装することを考慮すると、コーディングを統一するのは重要になってくる。
ただ、目視でチェックして、手動で管理・運用するのは膨大な時間と労力を費やすこととなり得策とは言えないだろう。
そこで、役に立つのが自動でimport文を整列させることができる『isort』というライブラリだ。
PEP8に準拠した順序に並び替えてくれる非常に楽で便利な機能を持っている。
Visual Studio Code(VSCode)でファイルの保存時に自動で実行して整列させることも可能。
つまり、この『isort』を使用すれば、毎回毎回import文の順番を気にする必要はなく、プロジェクト全体で統一されたコードを実現できるのだ。
この記事では、そんな便利なisortのインストール・実行手順およびVSCodeの自動整形の設定方法を解説していく。
isort インストール
ライブラリなのでPythonのパッケージマネージャーであるpip
コマンドでインストールが可能。
pip install isort
個人的にはパッケージ管理ツールは『pip』より『poetry』がおすすめ!詳細はリンクまたは以下の記事をご覧いただきたい。
特定のファイルを整列
以下のimport文が書かれた test.py
を例として説明していく。
お手元のファイル等で実際に動かしながら試してみてもらいたい。
import random
import datetime
import os
import sys
import typing
整列箇所が存在するか(import文の順序が間違っている箇所の有無)を確認する
isort
コマンドにオプションで、-c
または--check-only
を付けることで、修正箇所の有無を確認できる。
修正箇所がある場合は以下のような エラーが出力され、修正箇所がない場合は何も出力されない。
$ isort -c test.py
ERROR: /Users/hoge-development/backend/test.py Imports are incorrectly sorted and/or formatted.
$ isort --check-only test.py
ERROR: /Users/hoge-development/backend/test.py Imports are incorrectly sorted and/or formatted.
整列結果を表示する(ファイルの修正は実行されない)
isort
コマンドにオプションで、-d
または--stdout
を付けることで、修正した結果を確認できる。
ファイル自体は変更されないので、事前に整列結果を確認したいときなどに使用するとよい。
$ isort -d test.py
import datetime
import os
import random
import sys
import typing
整列箇所の差分を表示する(ファイルの修正は実行されない)
isort
コマンドにオプションで、-df
または--diff
を付けることで、修正結果の差分を確認できる。
+ / -(プラス・マイナス) にて修正箇所が差分形式で表示され、先程と同様にファイル自体は変更されない。
$ isort -df test.py
--- /Users/hoge-development/backend/test.py:before 2022-02-21 22:09:40.687097
+++ /Users/hoge-development/backend/test.py:after 2022-02-21 22:30:07.993833
@@ -1,5 +1,5 @@
-import random
import datetime
import os
+import random
import sys
import typing
整列する
オプションなしでisort
コマンドを実行するとファイルの修正が行われる。
Fixingと表示され、実際に指定したファイルのimport文が修正されていることを確認できる。
$ isort test.py
Fixing /Users/hoge-development/backend/test.py
ディレクトリ配下にあるファイルをまとめて整列
先述したisort
コマンドおよびオプションは、ディレクトリを対象にして同様に使用することができる。
指定したディレクトリ配下のPythonファイルを全て対象として実行されるので、一括でまとめて操作したいときはオススメだ。
$ isort -c backend
ERROR: /Users/hoge-development/backend/test.py Imports are incorrectly sorted and/or formatted.
ERROR: /Users/hoge-development/backend/fuga.py Imports are incorrectly sorted and/or formatted.
ERROR: /Users/hoge-development/backend/hoge.py Imports are incorrectly sorted and/or formatted.
プロジェクトの途中から導入した際も、今まで実装したPythonファイルを一気に整列できるのは非常に良い。
$ isort backend
Fixing /Users/hoge-development/backend/test.py
Fixing /Users/hoge-development/backend/fuga.py
Fixing /Users/hoge-development/backend/hoge.py
ファイル保存時にisortを自動で実行する
はじめに、メニューバーまたはショートカットキーでVisual Studio Code(VSCode)の設定画面を開く。
検索欄に『Editor: Code Actions On Save』を入力して、検索をする。
『settings.json で編集』をクリックすると設定ファイルが開かれるので、以下を追記して保存する。
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
これでファイルを保存した際に、自動でisortが実行されimport文が整列される。
まとめ
以上、isortのインストール手順およびコマンド操作の紹介、最後にVSCodeの設定について解説してきた。
自動整形できることは生産性向上につながり、統一されたコードは可読性が高いプログラムとなる。
この記事が少しでも参考になると幸いだ。
このブログでは、他のPythonに関する情報やプログラミング情報も公開しているので、気になる方は合わせてご覧いただきたい。