Python - パッケージのインポート(import)

公開日:2019-03-08

1. 概要

パッケージのモジュールをインポート(import)します。

2. パッケージにあるモジュールのインポート

フォルダ構成
├─ test.py (メイン)
└─ calc    (パッケージ)
     ├─ mod1.py (モジュール)
     └─ mod2.py (モジュール)

mod1.py
def add(v1, v2):
    return v1 + v2;

mod2.py
def multiply(v1, v2):
    return v1 * v2;

「from パッケージ名 import モジュール名」でインポートします。
test.py
from calc import mod1
from calc import mod2

print( mod1.add(1, 2) )
print( mod2.multiply(3, 4) )


また、以下のようにしてインポートすることもできます。
test.py
from calc.mod1 import add
from calc.mod2 import multiply

print( add(1, 2) )
print( multiply(3, 4) )

以下も可能。
test.py
import calc.mod1
import calc.mod2

print( calc.mod1.add(1, 2) )
print( calc.mod2.multiply(3, 4) )

2. パッケージのインポート

フォルダに __init__.py を置くと、import * でまとめてインポートできます。

フォルダ構成
├─ test.py (メイン)
└─ calc    (パッケージ)
     ├─ __init__.py
     ├─ mod1.py (モジュール)
     └─ mod2.py (モジュール)

__all__ にインポート可能なモジュール名をリストで指定します。
__init__.py
__all__ = [ "mod1", "mod2" ]

test.py
from calc import *

print( mod1.add(1, 2) )
print( mod2.multiply(3, 4) )


また、__init__.py でインポートを書いて、クラスや関数をインポートすることもできます。
__init__.py は、インポート時に実行されるため、初期化処理やインポートするモジュールを動的に変更することもできます。
__init__.py
from calc.mod1 import add
from calc      import mod2

#インポート時に実行されます。
print("インポートされました。")

test.py
from calc import *

print( add(1, 2) )
print( mod2.multiply(3, 4) )