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