サブディレクトリ内にあるモジュールをimportする方法
Google App Engine では app.yaml を含むディレクトリがルートディレクトリとなります。ルートディレクトリは Python モジュールのインクルードパスに含まれます。
例として、以下のディレクトリ構造を持つアプリケーションがあるとします。この場合、Dir1 ディレクトリがルートディレクトリとなります。
Dir1/ app.yaml ipf1.py Dir2/ exe1.py exe2.py ipf2.py
Dir2/exe1.py 内で Dir1/ipf1.py と Dir2/ipf2.py を import するとします。
何も設定を行わない場合、import ipf1 は成功しますが、import ipf2 は ImportError となります。このエラーの原因は、ルートディレクトリはインクルードパスに含まれているため検索され ipf1.py を見つけることができるのに対して、サブディレクトリは検索されないため ipf2.py を見つけることができないためです。
サブディレクトリにあるモジュールを import するには以下の処理が必要となります。
- Dir2 ディレクトリに __init__.py ファイルを作成します。__init__.py ファイルは空でもかまいません。
$ cd Dir2 $ touch __init__.py
- Dir2/exe1.py で、(ディレクトリ名).(ファイル名)という形式で import します。
import dir2.ipf2
以上をまとめると、ディレクトリ構造とコードは以下のようになります。
Dir1/ app.yaml ipf1.py Dir2/ __init__.py exe1.py exe2.py ipf2.py
[Dir2/exe1.py] import ipf1 import dir2.ipf2
こちらの URL を参考にさせていただきました。