Python でモジュールをインポートする際に使用される import
構文は、複数の指定方法があるため、初めはやや混乱するかもしれません。
以下に、import
のさまざまな指定方法をまとめておきます。
Python のモジュールとパッケージの基本については下記の記事を参考にしてください。
モジュール単位でのインポート
まずは基本から。 モジュール名でインポートする方法です。 この方法でモジュールをインポートした場合は、内部の関数などを参照するときは、モジュール名をプレフィックスとして付けます。
パッケージ内のモジュールをインポートするときは、次のいずれかの方法で記述しますが、モジュール内のメンバーを参照するときのプレフィックスが変わってきます。
2 階層以上のパッケージになっても同様です。
# 方法1
import mypkg.sub.mymod
mypkg.sub.mymod.hello()
# 方法2
from mypkg.sub import mymod
mymod.hello()
特定のメンバーのみをインポート
from モジュール名 import 関数名
という構文で、モジュール内の特定の関数だけインポートすれば、モジュール名を指定せずにその関数を直接呼び出せるようになります。
パッケージ内のモジュールに関しても同様です。
ワイルドカード (*
) を使って、モジュール内のすべてのメンバーをインポートできます(ただし、アンダースコア (_
) で始まるメンバーはインポートされません)。
別名を付けてインポート (as)
インポートしたモジュールや関数の名前が長すぎると感じたときは、as
キーワードを使用して別名を付けることができます。
別名は、名前のコンフリクトを防ぐためにも使用することがあります。
いろいろなインポートのパターン
最後にいろいろなインポートの例を載せておきます。 全部理解できれば、たぶんインポートマスターです。
# モジュール mod をインポート
import mod
# モジュール mod をインポート(hoge で参照)
import mod as hoge
# モジュール mod1 と mod2 をインポート
import mod1, mod2
# モジュール mod 内の関数 func をインポート
from mod import func
# モジュール mod 内の関数 func1 と func2 をインポート
from mod import func1, func2
# モジュール mod 内の全メンバーをインポート
from mod import *
# パッケージ pkg 内のモジュール mod をインポート(参照時のプレフィックスは pkg.mod)
import pkg.mod
# パッケージ pkg 内のサブパッケージ sub 内のモジュール mod をインポート(参照時のプレフィックスは pkg.sub.mod)
import pkg.sub.mod
# パッケージ pkg 内のモジュール mod をインポート(参照時のプレフィックスは mod)
from pkg import mod
# パッケージ pkg 内のモジュール mod をインポート(参照時のプレフィックスは hoge)
from pkg import mod as hoge
# パッケージ pkg 内のモジュール mod 内の関数 func をインポート
from pkg.mod import func
# 相対パスで同じ階層のモジュール mod をインポート
from . import mod
# 相対パスで同じ階層のモジュール mod 内の関数 func をインポート
from .mod import func
# 相対パスで 1 つ上のパッケージ階層のモジュール mod をインポート
from .. import mod
# 相対パスで 1 つ上のパッケージ階層のモジュール mod 内の関数 func をインポート
from ..mod import func