Google App Engine ( GAE ) の Standard Environment において Python 3.7 が正式に対応されました。Pycharm では GAE に対応した編集も行うことができますが、自分自身での設定が必要です。また、Pycharm Professional では以前より GAE に対応した機能がありましたが、これも Python 2.7 にしか対応していません。
そこで今回は、簡易的にPython 3.7 に対応した設定を紹介したいと思います。
(ローカル環境でCloud Datastoreなどの利用が必要な場合は適しません。)
本記事では、
- Pycharm
- Python 3.7
- Cloud SDK
がインストールされているものとし説明します。また以下の説明では Pycharm Professional を用いていますが、Pychram Community でも問題ないものと思われます。適宜置き換えてください。
プロジェクトの準備
プロジェクトを準備するとき、これまで Pycharm Professional を利用していた方であれば、テンプレートにGoogle App Engineを選択していたと思います。しかし、これはPython 2.7でなければエラーが表示されてしまうため、ここではPure Pythonを選択します。エンジンにはPython3.7を選択しましょう。
今回ビルド・実行するプロジェクトは、Google App Engineのチュートリアルで用いられているHello Worldを使います。
https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard_python37/hello_world
main.pyは次のようになります。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8080, debug=True)
またapp.yamlは次の通りです。
runtime: python37
requirements.txtもありますので、事前にインストールを済ませておきましょう。
pip install requirements.txt
ローカル環境での実行
ローカルで実行するには、通常次のコマンドが利用されます。
python main.py
毎回入力するのは面倒ですので、これを「Edit Configurations …」より「Run / Debug」に登録します。
登録方法は次の通りです。
設定は「Python」を選択します。
これで実行すると、アクセス可能なアドレスが表示されますので、そちらを表示し動作を確認してください。
Google App Engineへのデプロイ
従来のPycharmであれば、appengineを利用しデプロイしていましたが、ここではgcloudを利用します。コマンドは次の通りです。
gcloud deploy --project <project_name> --version 1 --no-promote --quiet
これも「Run / Debug」に登録しましょう。
登録方法は次の通りです。
設定は「Bash」を選択します。
- Script … app
- Interpreter path … gcloudのパス (Windowsの例: C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\gcloud.cmd)
- Program arguments … deploy –project –version 1 –no-promote –quiet
これで実行すると、2~3分でデプロイが完了します。詳細なログが表示されませんが、気長に待ってください。
まとめ
以上がPycharmでGoogle App Engineへのデプロイの簡易的な方法でした。冒頭でも述べましたように、この方法だとローカル環境でCloud Datastoreなど、Goofleが用意している固有のサービスのデバッグは行うことができません。(Cloud SQLであれば、ローカルにDBを用意することで代用可能です。)そのあたりに注意してご利用ください。