HEROKU with OpenCV-Python
HEROKUでPythonバックエンド(Flask)のアプリを動かそうとした際のエラー備忘録。
HEROKUがPythonを認識しない(requirements.txt)
HEROKUはrequirements.txtファイルによってPythonプログラムであることを認識する。 そこでrequirements.txtを作成し、Pythonプログラムのあるディレクトリに保存する。 requirements.txtの作成はpip freezを使うのが楽。 以下のコマンドを打ち込む。
pip freeze > requirements.txt
これで自分の環境にインストールされているライブラリが記述されたファイルが現在のディレクトリに作成される。
venvで仮想環境をアクティベートしている状態だと、仮想環境にインストールされているライブラリのみが書き出されるため、バージョン管理のためvenv環境で行う方が良い。
HEROKUが起動するPythonファイルを認識するためのProcfileも作成する必要がある。
こちらは拡張子が無いので、テキストエディタで作成する際に気をつける必要がある。
内容は以下の通り。
web: gunicorn Pythonファイル名:app
WSGIにgunicornを使用しているため、requirements.txtを作成する前に
pip install gunicorn
でgunicornをインストールしておく。
OpenCV関連エラー(libSM.so.6)
openCVをインポートしているプログラムをデプロイしたところ、
ImportError: libSM.so.6: cannot open shared object file: No such file or directory
というエラーがでた。
libSM.so.6がHEROKUには無いためでたエラーのようだ。
そこで、ターミナルに以下のコマンドを入力してbuildpackを追加する。
$ heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt
Aptfileをテキストエディタで作成し、requirements.txtと同じディレクトリに保存する。拡張子は無いので注意。
Aptfileの内容は以下の通り。
libsm6 libxrender1 libfontconfig1 libice6
これで準備は完了したのでデプロイする。
$ git add . $ git commit -m "add_Aptfile" $ git push heroku master
これで無事openCVがHEROKUで使えるようになる。
WEB技術全般について体系的に学習するならこの一冊がおすすめ
プロになるためのWeb技術入門 なぜ,あなたはWebシステムを開発できないのか [ 小森裕介 ] 価格:2,508円 |