Почему я получаю ошибку ModuleNotFoundError (Flask и Heroku)

#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 в корневую папку.