FlaskをGAEへ‼

今日は、いよいよFlask環境をGAEに公開し、Deeplearning用にローカルでテスト用に用意したモデルをオンラインに公開だーーーー‼

と、勢い込んだところで、

# 最初の挫折!!
Anacondaをpkgからインストールしたわけだが、pyenvを使っていなかった為、GAEをローカルで動かそうとした際、defaultのpythonが３系なので、GAEのローカル環境が構築できない。と言う事実が発覚。
GoogleAppEngineでは、Python2.7で環境を作らなければならない、、、泣ける

なので、pyenvを使った環境で、１から環境構築し直し。

# pyenvは大事。
今度は失敗しないように
https://qiita.com/togoturns/items/b2ae361a669933c823f5
こちらのサイトを参考にさせていただき、python2, python3を並行して構築できるように準備。

エンジニアにはTry&Errorが付き物で、挫折も何度もしてきているが、、、どうにも慣れない、、、スムーズに事を進めたいと思ってしまう。

# ネットワークが遅い(in the Philippines)
上記の通り、入れ直し、、、と思ったが、ネットワーク環境があまり良くない。
それに、せっかくAnacondaも入れてあるし、ここは、新たにPython2系で、仮想環境を構築し、そっちからGAEを起動できないか、模索してみよう‼と思った。
理論的にはできるはず、、、。とりあえず、新しく仮想環境をPython2.7で構築。
Terminalを起動したらPythonのバージョンは２．７と出ている‼

こっ、これは行けるのか？！

新たにPython2.7で作ったコンソールから無事、GAEのローカル環境構築が進められそう。
と言うことで、こちらに新たに環境を構築しながら進めてみます‼
何事も経験は大事！！！他の人がやっていないことも、自分の糧になる‼

# 挫折２回目

、、、進まない。

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で動かすのはいったん諦める、、、挫折２回目。

# となれば!!あとはやるだけ‼
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 <module>
    from flask import Flask
  File "/Users/nori/gaeflask/lib/flask/__init__.py", line 21, in <module>
    from .app import Flask, Request, Response
  File "/Users/nori/gaeflask/lib/flask/app.py", line 25, in <module>
    from . import cli, json
  File "/Users/nori/gaeflask/lib/flask/cli.py", line 18, in <module>
    import ssl
  File "/anaconda3/envs/flaskongae/lib/python2.7/ssl.py", line 98, in <module>
    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がつながらないなどの障害に見舞われたが、無事完了。