Я пытаюсь разместить приложение Flask на AWS Elastic Beanstalk в Python 3.6, но независимо от того, что я пытаюсь, URL-адрес приложения приводит к 500: Внутренняя ошибка сервера.
Структура моего приложенияследующим образом:
myApp:
-application.py
-mytransformers.py
-requirements.txt
Я посмотрел журналы, и нужный мне отдельный скрипт на python, содержащий пользовательские преобразователи Scikit-learn (mytransformers.py), не может быть найден wsgi:
AttributeError: Can't get attribute 'MyTransformer' on <module '__main__' (built-in)>
Они мне нужны, потому что я выбрал модели Scikit-learn в репозитории S3, которые я импортирую в application.py
, для которых требуются специальные трансформаторы.
Iпопытался переместить эти определения преобразователя в мой основной application.py
сценарий, но он по-прежнему возвращает ту же ошибку.
Я думаю, что сценарий wsgi не может найти эти определения преобразователя, и я не нашел много способовлюдей с похожей проблемой.
Изменить 1
Я попытался добавить файл __init__.py
в каталог приложения. Я все еще получаю ту же ошибку.Я пытаюсь загрузить конвейер Scikit-Learn с помощью Pickle, который содержит несколько пользовательских преобразователей, однако, когда я пытаюсь загрузить их, он выдает ошибку о невозможности найти пользовательские преобразователи, даже если я импортировал их в начале.сценария.Я попытался поместить определения классов для трансформаторов в сценарий application.py
, но это по-прежнему не устраняет ошибку.
Редактировать 2
Я почти уверен, что ошибканаходится в EB и использует WSGI для управления приложением Flask.Мое приложение работает локально, это просто WSGI, который, похоже, не может найти вспомогательные функции.Я обнаружил аналогичную публикацию с использованием Azure, в которой была похожая проблема с WSGI, которая не находила функции, определенные в файле приложения: Ошибка с WSGI при развертывании приложения Flask в Azure