【Python】モジュールをimportできないときの対処法

PythonとDjangoでチャットボットを作っていたとき、インポートできないエラーが発生した。
エラーの内容としてはImportError: No module namedというメッセージが表示され、プログラムが立ち上がらないというもの。

ちなみにこのプログラム、Djangoに組み込む前は動いていたけどDjangoに組み込んだ後にこのエラーが発生するようになった。

どうやらDjangoに組み込んだことでディレクトリ構造が変わり、インポートできなくなったというのが原因らしい。

ということで、そのとき試した対処法を以下にまとめる。

__init__.pyを配置する。

インポートしたいファイルがあるディレクトリに”__init__.py”という名前の空ファイルを作成して配置する。

これはPythonにこのファイルがある場所にモジュールがあることを示すファイルということらしい。

” . “を使う。

__init__.pyを配置しただけでは相変わらずエラーが消えなかったので、さらにネットを調べました。

pythonは日本語の情報が極端に少ないので、英語のサイトもあたってみることに。
すると、どこのサイトか忘れちゃったけど気になる情報があった。

下のようなディレクトリ構造だったとして…

Directory_A

├ Directory_B
│  ├ __init__.py
│  └ module_1.py

├ __init__.py
├ module_2.py
└ module_3.py

module_2からmodule_1をインポートしたいとする。
その場合、

と書いていたのを

に変えるとインポート成功!
すると次はmodule_3がインポートできないという内容のエラーが発生。

なので、こちらもインポート文を

にしてやるとインポート成功。
エラーは全て解消されて問題なく動くようになった。