今日は、いよいよFlask環境をGAEに公開し、Deeplearning用にローカルでテスト用に用意したモデルをオンラインに公開だーーーー‼
と、勢い込んだところで、
最初の挫折!!
Anacondaをpkgからインストールしたわけだが、pyenvを使っていなかった為、GAEをローカルで動かそうとした際、defaultのpythonが3系なので、GAEのローカル環境が構築できない。と言う事実が発覚。
GoogleAppEngineでは、Python2.7で環境を作らなければならない、、、泣ける
なので、pyenvを使った環境で、1から環境構築し直し。
pyenvは大事。
今度は失敗しないように
https://qiita.com/togoturns/items/b2ae361a669933c823f5
こちらのサイトを参考にさせていただき、python2, python3を並行して構築できるように準備。
エンジニアにはTry&Errorが付き物で、挫折も何度もしてきているが、、、どうにも慣れない、、、スムーズに事を進めたいと思ってしまう。
ネットワークが遅い(in the Philippines)
上記の通り、入れ直し、、、と思ったが、ネットワーク環境があまり良くない。
それに、せっかくAnacondaも入れてあるし、ここは、新たにPython2系で、仮想環境を構築し、そっちからGAEを起動できないか、模索してみよう‼と思った。
理論的にはできるはず、、、。とりあえず、新しく仮想環境をPython2.7で構築。
Terminalを起動したらPythonのバージョンは2.7と出ている‼
こっ、これは行けるのか?!
新たにPython2.7で作ったコンソールから無事、GAEのローカル環境構築が進められそう。
と言うことで、こちらに新たに環境を構築しながら進めてみます‼
何事も経験は大事!!!他の人がやっていないことも、自分の糧になる‼
挫折2回目
、、、進まない。
GAEは起動したが、動かすと
ERROR 2019-01-09 06:52:39,525 wsgi.py:263]
Traceback (most recent call last):
File "/Applications/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = config_handle.add_wsgi_middleware(self._LoadHandler())
File "/Applications/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/Applications/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import_(path[0])
File "/Users/nori/flask/app.py", line 11
SyntaxError: Non-ASCII character '\xe3' in file /Users/nori/flask/app.py on line 11, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
INFO 2019-01-09 06:52:39,561 module.py:861] default: "GET / HTTP/1.1" 500 -
^CINFO 2019-01-09 06:53:06,262 shutdown.py:50] Shutting down.
と言うエラーが。
ファイルの中に日本語を入れていたのでそれによりエラーが発生。
その後、いろいろ試行錯誤していたが、、、最終的に、残念な結果になった。
File "app.py", line 28
cv2.imwrite(f"images/{datetime.now().strftime('%s')}.jpg",img_resize)
^
SyntaxError: invalid syntax
はPython3以降で用意されている関数らしく、Python2環境で動かそうとするとエラーになる。
マジか。。。
とりあえず、このプログラムをGAEで動かすのはいったん諦める、、、挫折2回目。
となれば!!あとはやるだけ‼
https://qiita.com/togoturns/items/579b0cf73370f4022f29
こちらのサイトを参考にさせていただきながら、作業を進める。
できた‼最後の難関があった
とりあえず超簡単なサンプルで実行!!
しかしエラーが、、、
ERROR 2019-01-09 14:34:24,067 wsgi.py:263]
Traceback (most recent call last):
File "/Users/nori/.py_appengine/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = config_handle.add_wsgi_middleware(self._LoadHandler())
File "/Users/nori/.py_appengine/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/Users/nori/.py_appengine/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import(path[0])
File "/Users/nori/gaeflask/main.py", line 4, in
from flask import Flask
File "/Users/nori/gaeflask/lib/flask/init_.py", line 21, in
from .app import Flask, Request, Response
File "/Users/nori/gaeflask/lib/flask/app.py", line 25, in
from . import cli, json
File "/Users/nori/gaeflask/lib/flask/cli.py", line 18, in
import ssl
File "/anaconda3/envs/flaskongae/lib/python2.7/ssl.py", line 98, in
import _ssl # if we can't import it, let the error propagate
File "/Users/nori/.py_appengine/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/sandbox.py", line 1097, in load_module
raise ImportError('No module named %s' % fullname)
ImportError: No module named _ssl
もう、よくわからん!!!と探すと
http://yustam.hatenablog.com/entry/2013/11/02/163325
こんなものが見つかった。書いてあるとおり、WHITE_LISTへ突っ込み終了、、、じゃあ、最初から除外しておいてくれよ、、、。
gcloud app deploy
終末は来た、最後に、このコマンドを打ってGAEへデプロイ、、、途中、フィリピンのホテルでWi-Fiがつながらないなどの障害に見舞われたが、無事完了。