Вы должны убедиться, что app.py
на вашем PYTHON PATH
.
При выполнении непосредственно python component/com_auth
, верхний каталог не в PYTHON PATH
(реж только текущий скрипт будет автоматически добавлен в систему PYTHON PATH
), и, таким образом, верхние модули, такие как app.py
не могут быть импортированы.
Существует два решения вашей проблемы.
Быстрая и грязная (до сих пор я использую его, когда я ленивый, он хорошо работает), то вручную добавить его в PYTHON PATH
:
import sys
import os
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
Правильное решение, однако, всегда убедитесь, что точка входа вашей программы находится в вашем верхнем каталоге. Значение com_auth
никогда не должно запускаться напрямую, но всегда импортируется из модуля из модуля из модуля ... из корня. И там вы запускаете свой код, делая python point_of_entry.py
и никогда не python sub_module/any_other_module.py
. В вашем случае, возможно, app.py
.
В случаях, когда это невозможно или желательно (команды администратора, модульные тесты и т. Д.), У вас должен быть скрипт с возможностью добавления directoy в PYTHON PATH (это то, что django-admin, nosetest и т. Д.).
Я подозреваю, что вы просто проверяете свой модуль и хотите только быстро его запустить. В этом случае, просто введите:
PYTHONPATH='/path/to/your/project'
В вашей оболочке, и он будет добавлен в ваш PYTHON PATH для текущего сеанса.
Вы можете исправить свою архитектуру позже.
да мне лень переделывать около 40 файлов –
тогда лови ответ. – eri
Если вы уменьшите это или голосуете, чтобы закрыть, пожалуйста, введите объяснение (например, дублирующее соединение). В противном случае, это очень распространенная проблема для начинающих Python, поэтому мы должны помочь ему, а не downvote. –