このスレッドは少し古いことは知っていますが、ここまでたどり着くまでに少し時間がかかったので、共有したいと思います。
私のプロジェクトでは、メインスクリプトを親ディレクトリに配置し、モジュールを区別するために、すべてのサポートモジュールを「モジュール」と呼ばれるサブフォルダーに配置しました。私のメインスクリプトでは、次のようにこれらのモジュールをインポートします(report.pyというモジュールの場合)。
from modules.report import report, reportError
メインスクリプトを呼び出すと、これは機能します。ただし、次のようにmain()
、それぞれにa を含め、それぞれを直接呼び出すことで、各モジュールをテストしたいと思いました。
python modules/report.py
Pythonは「モジュールと呼ばれるモジュール」が見つからないと不平を言います。ここで重要なのは、デフォルトでは、Pythonは検索パスにスクリプトのフォルダーを含めますが、CWDは含めないということです。つまり、このエラーが実際に言っているのは、「モジュールのサブフォルダーが見つからない」ということです。これは、report.pyモジュールが存在するディレクトリからの「モジュール」サブディレクトリがないためです。
これに対する最も近い解決策は、これを先頭に含めることにより、CWDをPython検索パスに追加することです。
import sys
sys.path.append(".")
PythonはCWD(現在のディレクトリ)を検索し、「modules」サブフォルダーを見つけます。すべて順調です。