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

執筆者:


  1. urobon より:

    ImportError: No module named msvcrtの解決に参考になりました。
    ありがとうございました。

    • beeete2 より:

      urobonさん
      コメントありがとうございます。
      参考になってよかったです。

comment

メールアドレスが公開されることはありません。

関連記事

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

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

はじめてのJupyter Notebook(グラフ内の日本語対応)

最近、仕事の方ですごい簡単な利用統計を取ることがありJupyter Notebookで作ることにしました。 とは言えJupyter Notebookは触ったことがなかったので以下の書籍を購入しました。 …

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

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

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

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