LoginSignup
1
2

More than 1 year has passed since last update.

FlaskアプリをHerokuでデプロイ。そしてエラー解決。

Last updated at Posted at 2022-07-25

初めに

どうも、現在python歴3か月で転職の為に精進している者です。
今回ほぼ初めて、webアプリを作成し、Herokuにdeployしてみました。この際に色々なエラーや手間取った事もありましたので忘備録と少しでも皆様のお役に立てればと思い綴る事に致しました。

内容

今回はflaskで作成したwebアプリケーションをherokuでアップロードする際に発生したエラー解決について記述致します。
このようなエラー画面を解決しました。

2022-07-24_20h12_26.png

どう解決したか。
この画面が出現する。⇒herokuでログを確認する。⇒修正して再デプロイ
この画面が出現する。⇒herokuでログを確認する。⇒修正して再デプロイ
その繰り返しです。
これらのエラーを発見し解決しました。

heroku[web.1]: Starting process with command `python main.py`
2022-07-24T10:10:15.098952+00:00 app[web.1]: python: can't open file 'main.py': [Errno 2] No such file or directory

ModuleNotFoundError: No module named 'cv2'
ImportError libgl.so.1 cannot open shared object file no such file or directory

Web process failed to bind to $PORT within 60 seconds of launch

環境

windows11  Heroku  git hub  VScode

下記の記事を参照してflask構築を致しました。記事はそこから先の話です。

  • VScodeとgit hubを連携させ、VScode上から基本的なgit操作/github操作をできるようにする。(branchの作成やcommit,push等)

  • herokuにログインした後に基本的なデプロイ方法を把握する。

  • Herokuについてはこちら。

本編

  • 最初はログの確認方法が分からなかった。
    実は最初にherokuのログ確認方法すら分からなかったのでそこからお話します。
    下記画像のようにOpen appView logsを行き来しました。ログの見方の詳細はこちら

2022-07-25_23h08_03.png

ログで確認し解決したエラー達。


heroku[web.1]: Starting process with command `python main.py`
2022-07-24T10:10:15.098952+00:00 app[web.1]: python: can't open file 'main.py': [Errno 2] No such file or directory

ご覧の通りmain.pyを開くことができませんよと。対処方法はこちら。

flaskのProcfileの記載とpyファイルの名前確認。
Procfileこのコマンドによってmain.pyを動かすように指示をしているから。

2022-07-25_23h21_05.png

その後にaddしてcommitしてpushして再度確認。(これはgit hubの操作。確認はherokuのopen Appで)VScodeのadd/commit/pushはhttps://qiita.com/y-tsutsu/items/2ba96b16b220fb5913be#%E3%83%97%E3%83%83%E3%82%B7%E3%83%A5%E3%81%99%E3%82%8B

これによりエラー解決し、別のエラーが出現した

次のエラーがこちら。

 ModuleNotFoundError: No module named 'cv2'
ImportError libgl.so.1 cannot open shared object file no such file or directory

ご覧の通りcv2がないですよと。対処方法はこちら。
requirements.txtに適宜必要なモジュールをインポートしてください。
私の場合はcv2が足りなかったのでopencv-python--headless==4.5.1.48を付け加えました。
headlessの意味は不明ですが、下記サイトを参考に付け加えました。
詳細はこちら

2022-07-25_23h40_19.png

これによりエラー解決し、別のエラーが出現した

次のエラーがこちら。

Web process failed to bind to $PORT within 60 seconds of launch

一番下の設定を変更しました。きちんとherokuに対応するものに書き換える。

2022-07-26_00h01_41.png

if __name__ == "__main__":
    port = int(os.environ.get('PORT', 8080))
    app.run(host ="0.0.0.0",port = port)

エラー解決。Open app無事通る。

終わりに

地道な作業でしたが、以前よりも少しだけflaskについての理解が深まった感じがします。
まだ一般的な理解とは程遠いですが…。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2