2011年3月18日金曜日

Google App Engine SDK での開発サーバ・デバッグ環境構築について

遅ればせながら、Google App Engine (GAE) の開発サーバとデバッグ環境構築について記事を書きます。

Kay フレームワークでは Kay側で用意している開発サーバー及びデバッグ・コマンドを使用して開発を行う。
(参考: 以前の記事1  記事2 )

しかし標準フレームワークである WebApp や、専用コマンドを持たないフレームワーク利用下では、GAE Luncher などを使用して開発を進めていくことになる。これらの設定と注意点について、説明する。

Google App Engine Luncher

GAE Luncher は、GAE の開発用サーバを設定・起動できるプログラムである。(下イメージ画面)

通常は、

  1. メニューの [File]→[Add existing application] で、 Eclipse などで作成したアプリケーションのパス(app.yamlがあるフォルダー)を指定して登録する。
  2. [Run] ボタンで、登録したアプリケーションを開発サーバで動かす。
といった手順で使用する。

登録したアプリケーションを動かすときに、次のエラーが出ることがある。

Traceback (most recent call last):
  File "C:\google_appengine\dev_appserver.py", line 71, in <module>
    run_file(__file__, globals())
  File "C:\google_appengine\dev_appserver.py", line 67, in run_file
    execfile(script_path, globals_)
NameError: global name 'execfile' is not defined
これは Python 環境が、3.0 以上で出るエラーのようだ。GAE は Python 2.5 を用意する必要がある。

また PC に複数のバージョンの Python をインストールしていて、OS のパスには Python 2.5 を指定している場合も、同じエラーが出ることがある。GAE SDK のインストール時に、最も高いバージョンの Python を開発サーバ用として登録してしまうのが原因のようだ。

このようなエラーが出た場合、次の手順で GAE Luncher の python 環境を変更してあげれば良い。

「GAE Lunchar の Python環境の切り替え」

  1. メニューの [Edit]→[Preferences] で Preferences ウィンドウを開く。
  2. Python Path を Python 2.5 の pythonw.exe に変更する(下イメージ)。

Eclipse 上での環境設定

GAE Luncher を使わなくても、Eclipse上で開発サーバの起動とそして、デバッグが可能となっている。この環境設定についても簡単に説明する。

「設定手順」

  1. Eclipse上で GAEアプリケーションのプロジェクトを作成したら、Eclipseメニューの [実行]→[実行構成](もしくは[デバッグの構成]) で、「構成の作成、管理、および実行」ウィンドウを開く。
  2. パースペクティブは [PyDev GoogleApp Run] を選択して、[新規の起動構成]ボタンを押す。
  3. 次の項目を指定する
    タブ設定項目設定値
    -名前なんでも良い(プロジェクト名)
    メインプロジェクト今回のプロジェクトを選択
    メインメイン・モジュールGAE SDK フォルダーにある dev_appserver.py を指定
    (例:C:\google_appengine\dev_appserver.py)
    引数プログラムの引数アプリケーションの app.yaml がある場所を指定
    (例:${project_loc:sample_prj}/src)
    sample_prjフォルダー下の srcフォルダを指定
    project_loc変数で設定
  4. [適用] ボタンを押して保存する。

Eclipse上でアプリケーションをテストする時に、設定した構成を選択して[実行]ボタンを押す。すると開発サーバーが起動し、そのサーバ上でアプリケーションが稼動する。またデバック開始時に設定した構成を指定することにより、Eclipse上でのデバッグも可能だ。

詳細は次のサイトで確認のこと。
参考: Google Code - Python 開発用サーバ