2011年4月8日金曜日

Google App Engine SDK での Django バージョン指定

今回は小ネタです。

Google App Engine(GAE)へのアップロード時などに、『あなたの使っているSDKは古いので、新しいバージョンをインストールしてください』・・・といっったメッセージが英語で出る時がある。

あ~そうなんだ、ちょっと前にバージョンアップしたのにまたバージョンアップかよ、面倒だな。と思いつつ、気が向いた時にバージョンアップを行なっている。本当は mercurial あたりで配信してくれれば面倒な事をやらなくてもよいのだが、そうすると新しい機能が入った時にわからなくなる。今でもリリースノートなど見ているわけでもないので、絶対わからないだろう。

こんなことを書くのは、3月30日に SDK 1.4.3 リリースされたからだ。例の通りバージョンアップしてからデバッガをさわっていると、妙なメッセージに気がついた。デバッカコンソールに見慣れない次のメッセージがあった。

WARNING 2011-04-xx xx:xx:xx,073 __init__.py:792] You are using the default Django version (0.96). The default Django version will change in an App Engine release in the near future. Please call use_library() to explicitly select a Django version. For more information see http://code.google.com/appengine/docs/python/tools/libraries.html#Django
そう言えば、バージョンアップ前からこのメッセージ出てたよな。何だかよく分からなくて放っておいたけどね。デバッカコンソール自体あまり注意していないからね。

この日は違った。指定されたURLを見に行ったのだ。すると、

参考:サードパーティの Python ライブラリ - Django
SDKには Django0.96 が付属しています。といった説明があるだけだ。普通はここまでだが今回はさらに違った。Google で検索してみたのだ。検索にヒットしたページの中で次のサイトが目に止まった。

Python練習帳 - GAE/PythonでDjango1.2.5を使う方法

なるほど、Djangoのより新しいバージョンが使えるようになっていたのか。そう言えば、そんな話聞いたことがあったな。

そして今度は Google Code の英語版ページを見に行った。

参考:Third-party Python Libraries - Django
さすがに詳しく書いてあるな。

つまり、use_library というコマンドを使用してDjangoバージョンの切り替えが可能なようだ。切り替え可能なバージョンは 0.96 1.0 1.1 1.2 だ。SDKには 0.96 と 1.2 のDjangoは含まれている。しかし 1.0 及び 1.1 は含まれていないので、使用する時は事前に Django をダウンロードする必要があるとのことだ。

ちょっと前に Django0.96 のテンプレート言語で、機能が低いコマンドしか無いので悩んでいた。こんなことなら Django1.2 を使ってもよいかな。以前から Django1.x を使う方法はあったが、コマンド一個で切り替えれるのは便利だよね。しかも App Engine は近い将来、デフォルトを 1.2 に切り替えるようだ。

まとめ

Django1.2 に切り替えるには次のコードをソースの最初に記述する。

from google.appengine.dist import use_library
use_library('django', '1.2')
今度、使ってみます・・・。