Я знаю, что эта ветка устарела, но мне потребовалось некоторое время, чтобы разобраться в ней, поэтому я хотел поделиться.
В моем проекте у меня был основной сценарий в родительском каталоге, и, чтобы различать модули, я поместил все вспомогательные модули в подпапку под названием «modules». В моем основном сценарии я импортирую эти модули следующим образом (для модуля с именем report.py):
from modules.report import report, reportError
Если я вызываю свой основной сценарий, это работает. ОДНАКО, я хотел протестировать каждый модуль, включив main()
в каждый и вызывая каждый напрямую, как:
python modules/report.py
Теперь Python жалуется, что не может найти «модуль с именем modules». Ключевым моментом здесь является то, что по умолчанию Python включает папку скрипта в свой путь поиска, НО НЕ CWD. На самом деле эта ошибка говорит: «Я не могу найти подпапку модулей». Это связано с тем, что в каталоге, где находится модуль report.py, нет подкаталога «modules».
Я считаю, что лучшим решением этой проблемы является добавление CWD в путь поиска Python, включив его вверху:
import sys
sys.path.append(".")
Теперь Python просматривает CWD (текущий каталог), находит подпапку «modules», и все в порядке.