#python #heroku #flask
#python #heroku #flask
Вопрос:
Я пытаюсь запустить приложение Flask на веб-сайте Heroku. Я продолжаю получать ModuleNotFoundError: No module named 'app'
. Что приводит к ошибке H10s, что означает сбой приложения.
Большинство других сообщений, которые я видел для ModuleNotFoundErrors, не имеют отношения к Heroku.
Ошибка, которую я получил, показана ниже:
2019-03-26T21:48:51.850467 00:00 app[web.1]: __import__(module)
2019-03-26T21:48:51.850469 00:00 app[web.1]: ModuleNotFoundError: No module named 'app'
2019-03-26T21:48:51.850619 00:00 app[web.1]: [2019-03-26 21:48:51 0000]
[10] [INFO] Worker exiting (pid: 10)
2019-03-26T21:48:51.880416 00:00 app[web.1]: [2019-03-26 21:48:51 0000] [4] [INFO] Shutting down: Master
2019-03-26T21:48:51.880549 00:00 app[web.1]: [2019-03-26 21:48:51 0000] [4] [INFO] Reason: Worker failed to boot.
2019-03-26T21:48:51.958542 00:00 heroku[web.1]: Process exited with status 3
2019-03-26T21:48:54.000000 00:00 app[api]: Build succeeded
2019-03-26T21:49:27.367113 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=pure-gorge-37718.herokuapp.com request_id=6ca268c7-0b35-4a07-b628-5a7299d12f81 fwd="143.229.174.127" dyno= connect= service= status=503 bytes= protocol=https
2019-03-26T21:49:27.892816 00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=pure-gorge-37718.herokuapp.com request_id=0c7a5ac6-456c-489a-9eab-cdd94c8c68f2 fwd="143.229.174.127" dyno= connect= service= status=503 bytes= protocol=https
Почему эта ошибка возникает только при попытке запустить это приложение на Heroku?
Комментарии:
1. Как вы запускаете свое приложение локально? Что содержит ваш
Procfile
файл? Это может быть связано с вашим приложением и тем, как структурирован импорт, у этой ошибки могут быть тысячи причин.2. @CloC я использую
git push heroku master
затемheroku run
для локального запуска. МойProcfile
содержитweb: gunicorn app:FaceDetector/app.pyn
.3. Что, если запустить напрямую
gunicorn app:FaceDetector/app.py
? У вас возникает ошибка такого же типа? Это может быть вызвано тем, как вы структурировали свой проект. Вы ознакомились с документацией gunicorn о том, как ее использовать?4. @CloC Когда я запускаю
gunicorn app:FaceDetector/app.py
, я получаюModuleNotFoundError: No module named 'fcntl'
. Я не просматривал эту документацию; Я просто полагался на онлайн-руководства и метод проб и ошибок при создании Procfile, поскольку я не могу найти нигде, где явно указано, что я должен поместить.5. Копирование / вставка кода без понимания его приводит к ошибкам, подобным той, с которой вы столкнулись. По-видимому, вы используете Windows,
gunicorn
поскольку она несовместима с ней, у вас возникнут проблемы. Его использование с heroku делает это возможным, но добавляет больше сложности. Я бы рекомендовал начать с более простого проекта flask, который выполняется локально, не используяgunicorn
или heroku. Как только вы освоитесь, ознакомьтесь с инструментами devops, такими как gunicorn или heroku.
Ответ №1:
Я решил проблему, изменив Procfile
на web: gunicorn app:app
и переместив все содержимое из FaceDetector в корневую папку.