前提
以下のような構造の時の __init__.py
の書き方メモ。
root/
├ __init__.py
├ dir_a/
│ ├ __init__.py
│ └ test_a.py
(func_aが定義されている)
└ dir_b/
├ __init__.py
└ test_b.py
(func_bが定義されている)
import root
をしたら、root.func_a
で呼び出せるようにしたい。ということがあったので、これを実現します。
root直下のinit
root/__init__.py
については
root/__init__.py
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from root.dir_a import *
from root.dir_b import *
dir_aのinit
root/dir_a/__init__.py
については
root/dir_a/__init__.py
from dir_a.test_a import *
dir_bのinit
root/dir_b/__init__.py
も root/dir_a/__init__.py
と同様にして
root/dir_b/__init__.py
from dir_b.test_b import *
まとめ
やっていることは順次呼び出しているだけです。パスがやっかいですね。