Python - 名前空間パッケージのインポート(import)

公開日:2019-03-08

1. 概要

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

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

モジュール検索パス(sys.path)にパッケージのパスを指定すると、パッケージ名だけでパッケージを指定できるようになります。
また、検索パスに同じパッケージ名があった場合、同じパッケージとして扱われます。

以下のフォルダ構成では、pkg1 が異なるフォルダに1つずつありますが、それぞれモジュール検索パスの対象となっている場合には、同じパッケージとして扱われます。
フォルダ構成
├─ test.py (メイン)
├─ dir1
│    └─ pkg1(名前空間パッケージ)
│         └─ mod1.py(モジュール)
└─ dir2
     └─ dir3
          └─ pkg1(名前空間パッケージ)
               └─ mod2.py(モジュール)

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

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

sys.path.append() でモジュール検索パスの追加を行っています。
これにより、異なるフォルダにある mod1 と mod2 を、pkg1 からインポートできます。
test.py
import sys

sys.path.append("dir1")
sys.path.append("dir2/dir3")

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