Я пытаюсь разместить приложение Flask на Elasti c Beanstalk, однако в настоящее время я получаю ImportError, как видно из журналов ошибок:
![error log showing Import error](https://i.stack.imgur.com/2QAkE.png)
Код приложения можно увидеть здесь .
Структура каталогов следующая:
![enter image description here](https://i.stack.imgur.com/wZgfZ.png)
Приложение использует фабрику приложений, которая является функцией create_app () внутри flaskr/__init__.py
, которая возвращает экземпляр приложения.
Как я знаю, по умолчанию , Elasti c Bean (EB) ищет файл application.py и приложение, вызываемое внутри того, которое соответствует экземпляру.
Для этого я сделал следующее:
В конфигурации bean-компонента elasti c для моей среды я изменил WSGIPath с application.py
на flaskr/__init__.py
:
WSGIPath: flaskr/__init__.py
Затем я добавил следующий код в __init__.py
под фабрикой приложений (чего нет в моем хранилище):
application = create_app()
Из-за вывода стека вызовов в ошибке log, я почти уверен, что это дало желаемый эффект, когда EB находит __init__.py
и затем вызывает create_app()
. Проблема в том, что в функции create_app()
она не может выполнить строку:
from . import db
, которая импортирует файл flaskr/db.py
.
В журнале ошибок также указано, что 'flaskr/__init__.py cannot be loaded as a Python module'
. Разве он не распознает flaskr как пакет?
Будет ли работать, как исправить эту ошибку, исправить возможность импорта db.py
?
Я не могу понять, как это сделать.
Еще одна вещь, которую я упомяну, заключается в том, что вывод flask --version
указывает, что он использует Python 3.6.9
, а моя платформа среды AWS EB 'Python 3.6 работает на 64-битной Amazon Linux / 2.9.7' ,