Я знаю, що цей потік трохи старий, але мені знадобилося певний час, щоб дістатися до основи цього, тому я хотів поділитися.
У своєму проекті у мене був головний скрипт у батьківському каталозі, і, щоб розмежувати модулі, я помістив усі підтримуючі модулі в підпапку під назвою "модулі". У своєму головному сценарії я імпортую такі модулі, як цей (для модуля під назвою report.py):
from modules.report import report, reportError
Якщо я називаю свій основний сценарій, це працює. ЗАРАЗ, я хотів перевірити кожен модуль, включивши main()
в кожен і безпосередньо зателефонувавши як:
python modules/report.py
Тепер Python скаржиться, що не може знайти "модуль під назвою модулі". Ключовим тут є те, що за замовчуванням Python включає папку скрипту у свій шлях пошуку, АЛЕ НЕ CWD. Отже, що ця помилка говорить насправді, це "я не можу знайти підпапку модулів". Це тому, що в каталозі, де знаходиться модуль report.py, немає підкаталогу "модулі".
Я вважаю, що найкращим рішенням для цього є додавання CWD в шлях пошуку Python, включивши це вгорі:
import sys
sys.path.append(".")
Тепер Python здійснює пошук у CWD (поточний каталог), знаходить підпапку "модулі", і все добре.