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で準備します。

conda create -n gae anaconda numpy=1.6 python=2.7
activate gae

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

clickのバージョン

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

pip install --target lib --upgrade click==5.1

appengine_config.py

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

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 = ''

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

まとめ

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

-Python

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Pythonのテストを視覚的なテストレポートで出力する

Pythonでテストを書いて実行するときはnoseのnosetestsを使っています。 JavaだとGradleでテストを実行するとテストレポートは作ってくれるのですがnosetestsでどのようにレ …

Vagrantのshared_folderでマウント時にnosetestsでテストが読み込まれない

Pythonでテストを実行する時noseのnosetestsを使っているのですがVagrantのshared_folderでマウントしてるディレクトリでnosetestsと実行してもテストクラスとして …

Python初心者がPythonの環境構築をまとめたメモ(2017年)

最近、仕事でPythonを書いているのですがWindows環境でPython環境を構築するにあたり色々調べて最終的にAnacondaに落ち着きました。 Python力がなくて途中何をやっているのかよく …

ad-sidebar




カテゴリー