前提・実現したいこと
flaskでウェブアプリを作成し,herokuにデプロイしようとしています.
ディレクトリの構成は以下のようにしています.
bash
1/ 2├frontend 3├backend 4│ ├main.py 5│ └api.py 6│ 7├Pipfile 8├Pipfile.lock 9├Procfile 10├requirements.txt 11└rentime.txt
Herokuへのデプロイは問題なく行えたのですが,ブラウザで確認するとapplication errorとなっていました.
エラーメッセージから察するに,main.py
内でapi.py
を呼び出している箇所が上手く動作していないようです.
自分でいくつか調べてみたのですが,解決方法がわからず,手詰まりとなっている状況です.
発生している問題・エラーメッセージ
heroku open
でブラウザを起動すると,application errorとなり,heroku logs --tail
を実行すると,下記のようなエラーが出ます.
2020-03-07T13:53:54.436052+00:00 heroku[web.1]: State changed from starting to crashed 2020-03-07T13:53:54.440596+00:00 heroku[web.1]: State changed from crashed to starting 2020-03-07T13:53:54.421252+00:00 heroku[web.1]: Process exited with status 3 2020-03-07T13:53:59.526616+00:00 heroku[web.1]: Starting process with command `gunicorn -b 0.0.0.0:43457 backend.main:app` 2020-03-07T13:54:01.996346+00:00 heroku[web.1]: State changed from starting to crashed 2020-03-07T13:54:01.549850+00:00 app[web.1]: [2020-03-07 13:54:01 +0000] [4] [INFO] Starting gunicorn 20.0.4 2020-03-07T13:54:01.550738+00:00 app[web.1]: [2020-03-07 13:54:01 +0000] [4] [INFO] Listening at: http://0.0.0.0:43457 (4) 2020-03-07T13:54:01.550846+00:00 app[web.1]: [2020-03-07 13:54:01 +0000] [4] [INFO] Using worker: sync 2020-03-07T13:54:01.554785+00:00 app[web.1]: [2020-03-07 13:54:01 +0000] [10] [INFO] Booting worker with pid: 10 2020-03-07T13:54:01.644973+00:00 app[web.1]: [2020-03-07 13:54:01 +0000] [11] [INFO] Booting worker with pid: 11 2020-03-07T13:54:01.717102+00:00 app[web.1]: [2020-03-07 13:54:01 +0000] [10] [ERROR] Exception in worker process 2020-03-07T13:54:01.717104+00:00 app[web.1]: Traceback (most recent call last): 2020-03-07T13:54:01.717105+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker 2020-03-07T13:54:01.717105+00:00 app[web.1]: worker.init_process() 2020-03-07T13:54:01.717106+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process 2020-03-07T13:54:01.717106+00:00 app[web.1]: self.load_wsgi() 2020-03-07T13:54:01.717106+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi 2020-03-07T13:54:01.717107+00:00 app[web.1]: self.wsgi = self.app.wsgi() 2020-03-07T13:54:01.717107+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi 2020-03-07T13:54:01.717108+00:00 app[web.1]: self.callable = self.load() 2020-03-07T13:54:01.717108+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load 2020-03-07T13:54:01.717108+00:00 app[web.1]: return self.load_wsgiapp() 2020-03-07T13:54:01.717109+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp 2020-03-07T13:54:01.717109+00:00 app[web.1]: return util.import_app(self.app_uri) 2020-03-07T13:54:01.717110+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app 2020-03-07T13:54:01.717110+00:00 app[web.1]: mod = importlib.import_module(module) 2020-03-07T13:54:01.717110+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/importlib/__init__.py", line 127, in import_module 2020-03-07T13:54:01.717111+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level) 2020-03-07T13:54:01.717111+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import 2020-03-07T13:54:01.717112+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 983, in _find_and_load 2020-03-07T13:54:01.717112+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked 2020-03-07T13:54:01.717113+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 677, in _load_unlocked 2020-03-07T13:54:01.717113+00:00 app[web.1]: File "<frozen importlib._bootstrap_external>", line 728, in exec_module 2020-03-07T13:54:01.717113+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed 2020-03-07T13:54:01.717114+00:00 app[web.1]: File "/app/backend/main.py", line 4, in <module> 2020-03-07T13:54:01.717114+00:00 app[web.1]: from api import get_user_bp, login_bp, mypage_init_bp, data_update_bp 2020-03-07T13:54:01.717119+00:00 app[web.1]: ModuleNotFoundError: No module named 'api' 2020-03-07T13:54:01.717268+00:00 app[web.1]: [2020-03-07 13:54:01 +0000] [10] [INFO] Worker exiting (pid: 10) 2020-03-07T13:54:01.844003+00:00 app[web.1]: [2020-03-07 13:54:01 +0000] [11] [ERROR] Exception in worker process 2020-03-07T13:54:01.844024+00:00 app[web.1]: Traceback (most recent call last): 2020-03-07T13:54:01.844025+00:00 app[web.1]: File
ModuleNotFoundError: No module named 'api'
とあることから,おそらくmain.py
内で自作モジュールapi.py
を上手く呼び出すことが出来ていないのだと思います.
該当のソースコード
main.pyでは,以下のコードでapi.pyをインポートしています.
python
1from flask import Flask, render_template 2from api import get_user_bp, login_bp, mypage_init_bp, data_update_bp
Pipfile
[[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] flask = "*" gunicorn = "*" pyrebase = "*" flask-restful = "*" [requires] python_version = "3.7" [scripts] start = "python backend/main.py"
Procfile
web: gunicorn -b 0.0.0.0:$PORT backend.main:app
requirements.txt
aniso8601==8.0.0 Click==7.0 Flask==1.1.1 Flask-RESTful==0.3.8 gcloud==0.17.0 googleapis-common-protos==1.51.0 gunicorn==20.0.4 httplib2==0.17.0 itsdangerous==1.1.0 Jinja2==2.11.1 jws==0.1.3 MarkupSafe==1.1.1 oauth2client==3.0.0 protobuf==3.11.3 pyasn1==0.4.8 pyasn1-modules==0.2.8 pycryptodome==3.4.3 Pyrebase==3.0.27 python-jwt==2.0.1 pytz==2019.3 requests==2.11.1 requests-toolbelt==0.7.0 rsa==4.0 six==1.14.0 Werkzeug==1.0.0
runtime.txt
python-3.7.5
試したこと
main.py
でapi.py
を呼び出す部分を除いたコードをデプロイした際は,問題なくアプリケーションがweb上で確認することが出来ました.- localでは,api.pyの呼び出しも含め,何もエラーは出ていません.
補足情報(FW/ツールのバージョンなど)
- Heroku: Freeアカウント
- ローカル環境:python3.7.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。