Приложение Elasti c Bean Flask не может импортировать имена из моего целевого сценария WSGI - "__init__.py не может быть загружен как Python модуль" - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь разместить приложение Flask на Elasti c Beanstalk, однако в настоящее время я получаю ImportError, как видно из журналов ошибок:

error log showing Import error

Код приложения можно увидеть здесь .

Структура каталогов следующая:

enter image description here

Приложение использует фабрику приложений, которая является функцией 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' ,

...