Pythonでコードを書く際、インポート文はしばしば無秩序になりがちです。
複数のライブラリやモジュールを使うプロジェクトでは、インポート文が増えていき、その順序や構造が崩れることがあります。
PEP8は、Pythonの公式スタイルガイドとして、インポート文の整列に関する明確なルールを提供していますが、手動でこれを管理するのは大変です。
そんな時に役立つのが isort です。
isortは、インポート文を自動的に整理し、PEP8に準拠したフォーマットに整えてくれるツールです。
この記事では、isortの基本的な使い方、設定オプション、そしてBlackなどの他のフォーマッタとの併用方法を紹介します。
isortを導入することで、コードの可読性が向上し、インポート文の管理が簡単になります。
import文が増えてくると管理するのも大変です!
簡単に使えるツールはありませんか?
それならisortを紹介しますね!
インストールは簡単ですし様々な使い方ができますよ!
isortのインストール方法
isortを使用するには、まずインストールが必要です。
以下のコマンドを使用してインストールできます。
pip install isort
このコマンドを実行すると、最新バージョンのisortがインストールされます。
インストール後、isort --version
コマンドを使用してバージョンを確認し、動作が問題ないことを確認しましょう。
isort --version
isortが正常にインストールされたら、次のセクションで紹介する基本的な使用方法を試してみましょう。
コマンドラインでの基本的な使用方法
isortは、主にコマンドラインから実行することができます。
最も基本的な使い方は、特定のファイルに対してisortを実行する方法です。
isort your_script.py
このコマンドを実行すると、指定したPythonファイル内のインポート文が自動的に整理されます。
ディレクトリ全体に対するisortの適用
複数のファイルを一括で整理したい場合は、ディレクトリを指定して実行します。
現在のディレクトリにあるすべてのPythonファイルに対してisortを適用するには、以下のコマンドを使用します。
isort .
オプションの紹介
isortは多くのオプションを提供しており、使い方に応じてカスタマイズが可能です。
例えば、インポート文をチェックのみして、修正を加えないオプションもあります。
isort --check-only your_script.py
これにより、ファイルが適切に整形されているかどうか確認できます。
Pythonコード内でのisortの使用
isortはコマンドラインでの使用に加えて、Pythonコード内でも利用できます。
たとえば、動的にコードを生成したり、ファイルを操作したりする場合に便利です。
まず、isortをPythonスクリプト内でインポートします。
import isort
文字列コードの整形
文字列として与えられたPythonコードを整形する場合、isort.code
メソッドを使用します。
sorted_code = isort.code("import sys\nimport os\n")
print(sorted_code)
このコードは、import os
を import sys
の前に並び替えます。
ファイル単位での整形
特定のファイルに対して直接isortを適用する場合は、isort.file
メソッドを使います。
isort.file("path/to/file.py")
インポート文の整形確認
コードが正しく整形されているかを確認するためには、isort.check_code
メソッドを使用します。
is_sorted = isort.check_code("import sys\nimport os\n")
print(is_sorted) # True if sorted, False if not
この機能は、整形されていないインポート文がある場合にアラートを出す際に有用です。
isortの主な機能
isortは、単にインポート文を並べ替えるだけでなく、以下のような機能を提供しています。
インポート文のアルファベット順整列
isortはデフォルトで、インポート文をアルファベット順に並べ替えます。
これにより、インポート文が視覚的に整理され、検索が容易になります。
標準ライブラリ、サードパーティ、ローカルモジュールの分類
isortは、インポート文を3つのグループに自動的に分けます。
- 標準ライブラリ(
import os
など) - サードパーティのライブラリ(
import numpy
など) - ローカルモジュール(自分のプロジェクト内のモジュール)
この分離により、依存関係の管理がしやすくなります。
複数行インポートの最適化
isortは、長いインポート文を複数行に分割する場合でも、最適なフォーマットで整形します。
isortの設定オプション
isortの動作は、プロジェクトに応じてカスタマイズ可能です。
特に、設定ファイルを使用することで、一貫したコードスタイルを保つことができます。
設定ファイルとしては、pyproject.toml
, .isort.cfg
, setup.cfg
などが使えます。
pyproject.tomlの設定例
以下は、pyproject.toml
におけるisortの設定例です。
[tool.isort]
profile = "black"
line_length = 88
multi_line_output = 3
ここでは、profile = "black"
によって、コードフォーマッタBlackと連携した設定がされています。
また、line_length = 88
で1行の最大長を88文字に制限し、multi_line_output = 3
で複数行インポートのスタイルを指定しています。
特殊な使用例
1行ずつのインポート
--force-single-line-imports
オプションを使用すると、同じパッケージからのインポートを1行ずつに分けることができます。
isort --force-single-line-imports your_script.py
これにより、次のようにインポート文が変わります。
# Before
from mypackage import a, b, c
# After
from mypackage import a
from mypackage import b
from mypackage import c
Blackとの併用
Blackとの併用を考慮する場合、profile = "black"
を設定に追加します。
この設定により、isortはBlackのコードスタイルに従ったフォーマットでインポート文を整形します。
isort使用時の注意点
依存関係のインストール
isortを実行する前に、プロジェクトの依存関係をインストールしておくことが重要です。
これにより、サードパーティのライブラリが正しく分類されます。
チーム開発での統一設定
複数人で開発を行う場合、isortの設定をチーム全体で統一することが重要です。
これにより、一貫したコードスタイルを保ち、コードレビューやマージ時のトラブルを防ぐことができます。
まとめ
isortは、Pythonのインポート文を自動的に整理し、コードの可読性を向上させる強力なツールです。
標準ライブラリ、サードパーティのライブラリ、ローカルモジュールを分類して整理することで、コードの見通しが良くなり、PEP8に準拠したコードスタイルが維持できます。
Blackなどの他のツールと組み合わせることで、さらに一貫性のあるフォーマットを実現できます。
isortを活用して、クリーンで管理しやすいPythonコードを保つことができるでしょう。
このサイトのトップページへは以下へアクセス!
コメント