Python

Google App Engineのdev_appserver.pyをWindowsで動かす

Google App Engine(GAE)はStandard environmentFlexible environmentの2あるんですけど、無料枠が適用されるのはStandard environmentだったので今回はStandard environmentを使ってみることにしました。
お恥ずかしいことにGAEは初挑戦です。

まずGAEのPythonは2.7でバージョンが固定され依存ライブラリもバージョンが固定されています。
組み込みサードパーティ ライブラリ
なのでStandard environmentではPython3系は使えないので要注意です。
あとGoogle Cloud SDKもインストール必須だと思います。

dev_appserver.pyを動かすまで

Google Cloud SDKとGAE用のPythonツールをインストールすると確かdev_appserver.pyが使えるようになります。
おそらくローカルでGAEの環境を再現するものだと思います。
Hello Worldを表示するだけWebアプリケーションをFlaskで作ったのですがこれがWindows10で動かない・・・。
最終的にHello Wolrdは表示できました。

Pythonの準備

Python2.7でdev_appserver.pyを起動するとImportError: No module named _ctypesみたいなエラーが表示されました。
自分はAnacondaを使っているのでcondaで準備します。

[code lang=bash]
conda create -n gae anaconda numpy=1.6 python=2.7
activate gae
[/code]

このnumpy=1.6が大事で詳しくはこちらをご参照ください。

clickのバージョン

上のバージョンを使ってdev_appserver.pyを実行してもImportError: No module named _ctypesのエラーが表示されました。
どういう経緯で見つけたのかはわかりませんがこちらのページと同様にClickのバージョンを上げました。

[code lang=bash]
pip install --target lib --upgrade click==5.1
[/code]

appengine_config.py

上記の状態でNo module named _ctypesは消えたのですが、次に違うエラーが表示されます。
ImportError: No module named msvcrtというエラーです。
これはこちらのページと同様にワークアラウンドで回避しました。
appengine_config.pyを修正します。
[python]
import os
import sys
from google.appengine.ext import vendor

vendor.add('lib')

if os.environ.get('SERVER_SOFTWARE', '').startswith('Google App Engine'):
sys.path.insert(0, 'lib.zip')
else:
if os.name == 'nt':
os.name = None
sys.platform = ''
[/python]

これでようやくHello Worldが表示されるようになりました。

まとめ

Hello Worldを表示させるのに久々に苦労しました。
10年以上前にApacheとTomcatを連携させているときのような感覚に陥りました・・・。
Hello Worldを表示させたときの達成感が大きかった。

-Python

© 2025 ビー鉄のブログ Powered by AFFINGER5