ページ

2011年5月20日

Google App EngineでFlaskでjinja2を使ったときのメモ

Google App EngineでもDjango使っている人が多そうな気がしますが、僕はDjangoはよく分かりません。Djangoの本は買ったりしましたが1ページも読んでません。Pythonでは普段は大体Flaskを使っています。これぐらいの規模のフレームワークが僕にはしっくり来ます。それで、GAEでFlaskを使って開発しようとしたときのメモです。

はやりはbuildbotを使って環境を構築するらしいので、それにならいます。「Flask on Google App Engine(buildbot編)」を参考に、というか、そのまんま作業します。コマンドプロンプトで作業プロンプトでプロジェクトのディレクトリに移動して次のコマンドを実行します。

$ git clone https://github.com/utahta/flask-gae-template.git
$ cd flask-gae-template
$ curl -LO http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
$ python2.5 bootstrap.py -d
$ ./bin/buildout

GAEはpython2.5なので、python2.5にあわせておきます。今日の地点でのflask-gae-templateのSDKのバージョンは1.4.3ベースです。1.5ベースにしたいので、buildout.cfgを編集します。あと、ほとんどの人はアプリケーションを国際化すると思うのですが、国際化できるようにbabelをインストールしてみたり。で、buildout.cfgのdiffはこんな感じになりました。tweepyがいますが、気にしないでください。

--- a/buildout.cfg
+++ b/buildout.cfg
@@ -42,6 +42,8 @@ use-zipimport = false
 eggs =
     Flask
     Flask-WTF
+    Flask-Babel
+    tweepy

 ignore-globs =
     *.c
@@ -62,7 +64,7 @@ ignore-packages =

 [gae_sdk]
 recipe = appfy.recipe.gae:sdk
-url = http://googleappengine.googlecode.com/files/google_appengine_1.4.3.zip
+url = http://googleappengine.googlecode.com/files/google_appengine_1.5.0.zip
 clear-destination = true

 [gae_tools]

この変更をしてから、./bin/buildoutを実行します。アプリケーションを実行して表示するとImportErrorでpkg_resources.pyがロードできないと怒られます。よくわからないので、この記事にあるpkg_resources.pyをsrcの下にコピーします。これで、動いたけどいいのか?と、疑問を持ちつつ、jinja2のテンプレートファイルはsrc/templatesの下に配置すればそれをロードして表示してくれます。

と言うことでGAE上のPythonは終わってGoであえて茨の道を突き進むことにしたのでした。

でわでわ

0 件のコメント: