k-yamadaのブログ

プログラミングのメモ

GAE用フレームワーク「Kay」を試してみる

[環境]
Mac OS X Snow Leopard

[環境構築]

Python2.7インストール


http://d.hatena.ne.jp/yono05/20100923/1285235346

Pythonのライブラリ管理ツールをインストール
(vertualenvというのを使うのがいいらしいが、面倒なので今回は省略)
http://sakito.jp/python/pythonsetup.html#id2
http://d.hatena.ne.jp/pasela/20110704/pythonbrew

$ curl -O http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py
$ sudo easy_install -UZ pip


App Engine SDK/Python 1.6.6(Mac OS X)をインストール
https://developers.google.com/appengine/downloads?hl=ja#Google_App_Engine_SDK_for_Python


ここで、GoogleAppEngineLauncher起動時に、以下のエラーダイアログが表示された。

Sorry, pieces of GoogleAppEngineLauncher.app appear missing or corrupted, or I can't run python2.5 properly. Output was:

解決方法としては、「/usr/bin/」以下に、上記でインストールしたPython2.7のシンボリックリンクを貼ればいいようだ。このLauncherは「/usr/bin/python」を使うようになっているんだろう。

sudo ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python /usr/bin/

参考:http://code.google.com/p/googleappengine/issues/detail?id=453


次に、helloworldプロジェクトを作って、Runした時に以下のエラーが発生した

・・
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/cgi.py", line 31, in <module>
    import urllib
・・

どうも、python2.6がインストールされていたので、そちらを使おうとして失敗しているらしい。
以下のコマンドでpython2.6を削除して、再度Runすると起動した。

$ sudo rm -rf /System/Library/Frameworks/Python.framework
$ sudo rm -rf /usr/bin/python2.6


Kayチュートリアル
http://kay-docs-jp.shehas.net/tutorial.html

チュートリアルに従ってプロジェクト開始するときにエラーが発生した。

$ python kay/manage.py startproject myproject
Running on Kay-1.1.1
・・
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/_webapp25.py", line 75, in <module>
    import webob
ImportError: No module named webob

webobというmoduleをインストールして再実行すると成功する。

$ sudo pip install webob
$ python kay/manage.py startproject myproject
・・
Finished creating new project: myproject.


また、アプリケーション開始時にもエラーが出る。

$ python manage.py runserver
・・
    appconfig, unused = dev_appserver.LoadAppConfig(PROJECT_DIR, {})
ValueError: too many values to unpack

kay/misc/__init__.py の21行目を次のように書き換えて、再実行すると成功する。

      from google.appengine.tools import dev_appserver
      from kay import PROJECT_DIR
      #appconfig, unused = dev_appserver.LoadAppConfig(PROJECT_DIR, {})
      appconfig, matcher, from_cache = dev_appserver.LoadAppConfig(PROJECT_DIR, {})
      appid = appconfig.application

<参考>
http://tategakibunko.blog83.fc2.com/blog-entry-460.html
https://groups.google.com/forum/?fromgroups#!topic/kay-users-ja/q3RthlCc0bk

チュートリアルを進めて、管理画面の「http://localhost:8080/_ah/admin」を表示すると、
またエラーになった。

開発用サーバーでデータが保存できるか試してみましょう。いくつかコメント を投稿した後に http://localhost:8080/_ah/admin へアクセスすると、データ ストアの中身を見る事ができます。

エラー内容

・・
"/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/_webapp25.py", line 76, in
import webob
ImportError: No module named webob

このエラーはGoogleAppEngineLauncherからアプリケーションを起動したときには発生しない。