Pythonでモジュールをインポート(import, from import)
この記事では、Pythonにおけるモジュールのインポート方法について解説します。`import`文と`from import`文の使い方、効率的なインポート方法、そしてよくあるエラーとその対処法について説明します。
目次
`import`文によるモジュールのインポート
最も基本的なインポート方法は`import`文です。モジュール名を指定してインポートし、モジュール名を使ってアクセスします。
import math
print(math.sqrt(25)) # 5.0
上記のように`math`モジュールをインポートし、`math.sqrt()`関数を使用しています。
import os, sys
print(os.getcwd())
print(sys.version)
複数のモジュールを同時にインポートすることもできます。
`from import`文によるモジュールのインポート
`from import`文を使うと、モジュールから特定の関数やクラスを直接インポートできます。
from math import sqrt
print(sqrt(25)) # 5.0
この例では`math`モジュールの`sqrt`関数を直接インポートしています。モジュール名を省略して使用できますが、名前の衝突に注意が必要です。
from math import sqrt, pi
print(sqrt(25))
print(pi)
複数の関数やクラスを同時にインポートすることもできます。
効率的なインポート方法
多くのモジュールをインポートする場合は、インポートするモジュールをまとめたり、必要なものだけをインポートすることで、コードの見通しを良くし、読み込み時間を短縮できます。
import math
from os import getcwd, path
print(math.sin(30))
print(getcwd())
使用頻度や依存関係を考慮して整理しましょう。
パッケージのインポート
パッケージとは、複数のモジュールをまとめたものです。パッケージ内のモジュールをインポートするには、パッケージ名とモジュール名を指定します。
import mypackage.mymodule
mypackage.mymodule.myfunction()
絶対インポートと相対インポート
絶対インポートは、パッケージのルートディレクトリからの相対パスでモジュールを指定します。相対インポートは、現在のモジュールからの相対パスでモジュールを指定します。Python3.3以降では、`__init__.py`ファイル内の`__all__`変数を使って、インポート可能なモジュールを制限できます。
#絶対インポート
from mypackage.subpackage.module import myfunction
#相対インポート (Python 3.3以降推奨)
from .module import myfunction
よくあるエラーと対処法
モジュールのインポート時に発生する可能性のあるエラーとその対処法です。
- `ModuleNotFoundError`:指定したモジュールが見つからない場合。モジュール名が正しいか、環境変数`PYTHONPATH`を確認しましょう。
- `ImportError`:モジュールは存在するが、インポートできない場合。依存関係の問題や、循環インポートの問題の可能性があります。
- 名前の衝突:`from import`でインポートした名前が重複した場合。モジュール名をつけて明示的に呼び出すか、別の名前でインポートしましょう。