У меня есть ImportError после развертывания на эластичном бобовом стебле. Мы используем Falcon для создания API. Я успешно использовал EB CLI для инициализации приложения, создания среды и развертывания моего кода. Мы используем Python 2.7 (на данный момент).ImportError - разверните приложение Falcon для AWS Elastic Beanstalk
Сайт AWS EB для приложения/окружающей среды говорит, что все шло хорошо, но когда я отправить запрос на апи, журналы показывают эту ошибку:
[Wed Nov 30 06:02:25.555507 2016] [:error] [pid 29352] [remote 127.0.0.1:56624] Traceback (most recent call last):
[Wed Nov 30 06:02:25.555524 2016] [:error] [pid 29352] [remote 127.0.0.1:56624] File "/opt/python/current/app/api/app.py", line 12, in <module>
[Wed Nov 30 06:02:25.555549 2016] [:error] [pid 29352] [remote 127.0.0.1:56624] from middlewares import require_json
[Wed Nov 30 06:02:25.555566 2016] [:error] [pid 29352] [remote 127.0.0.1:56624] ImportError: No module named middlewares
[Wed Nov 30 06:02:26.558411 2016] [:error] [pid 29352] [remote 127.0.0.1:60720] mod_wsgi (pid=29352): Target WSGI script '/opt/python/current/app/api/app.py' cannot be loaded as Python module.
Локально мои импорта работать только штрафом. Соответствующие части апи выглядеть следующим образом:
-api/
-__init__.py #import app
-app.py
-middlewares/
-__init__.py #import require_json
-require_json.py
Line 12 из моего app.py файла:
from middlewares import require_json
Но журналы постоянно говорят это ImportError. Любые мысли о том, что здесь произошло? Я озадачен.
Что касается __init__.py
файлов, импортирующих модули; это устаревшая база кода, и я не уверен, что последствия для этого еще не изменились, кроме тестов.
EDIT
Этим утром я попытался закомментировать эти импортные линии, но это только дает мне ошибки на следующий импорт:
[Wed Nov 30 21:52:00.699228 2016] [:error] [pid 11254] [remote 172.31.8.163:37352] Traceback (most recent call last):
[Wed Nov 30 21:52:00.699245 2016] [:error] [pid 11254] [remote 172.31.8.163:37352] File "/opt/python/current/app/api/app.py", line 15, in <module>
[Wed Nov 30 21:52:00.699270 2016] [:error] [pid 11254] [remote 172.31.8.163:37352] import resources
[Wed Nov 30 21:52:00.699288 2016] [:error] [pid 11254] [remote 172.31.8.163:37352] ImportError: No module named resources
Я также сделал то, что рекомендованное в this article ,
import sys
sys.path.insert(0, '/opt/python/current/app')
Спасибо ... Я ошибочно думал, что я не нужен WSGI скрипт, это работает сейчас. – JasTonAChair
Проблема в том, что вы попали в файл кода по пути, который был частью пакета Python. Из-за этого у Python не было смысла, где был корень для пакета. –