OSX(10.6)でAppEngine(Python)の開発環境を整える
Google AppEngine(Python)を以前からちょこちょこいじっていますが、環境構築について手探りな状況が続いていました。ですが エキスパートPythonプログラミング読書会 に参加させていただいて知識を得られたので、あらためて開発環境を整えてみたいと思います。
Pythonのバージョン
手元の環境(MacOSX Snow Leopard)にはデフォルトでPythonがインストールされていて、そのバージョンは2.6.1でした。
$ python --version Python 2.6.1
AppEngine実行環境のPythonはバージョン2.5(※)なので、開発環境もそれに合わせる必要があります。OSXでは /System/Library/Frameworks/Python.framework/Versions 以下に過去のバージョンもインストールされているので、今回はこれを使ってみます。
(※ Googleのドキュメント を参照すると2.5.2とあります)
(4/24追記)
上記インストール済みPythonはバージョン2.5.4だったため、以下からOSX用のパッケージ(バージョン2.5.2)をダウンロード・インストールして使うことにしました。このパッケージは /Library/Frameworks/Python.framework/Versions 以下にPythonをインストールするようです。
- http://www.python.org/download/releases/2.5.2/
buildout
環境変数PATHを自分で調整することでPythonのバージョンを切り替えることもできますが、ここでは構成管理ツールである buildout を使うことにします。
buildoutを使うメリットとして以下が挙げられます。
- 依存ライブラリをシステム領域とは別に用意できる(システム領域を汚さない)
- 依存ライブラリの管理を自動化
- Pythonインタプリタの切り替え
tipfy
AppEngineのSDKにはwebappというフレームワークが含まれていますが、今回は tipfy を使ってみます。
tipfyはAppEngine用に作られたフレームワークで、はじめからbuildoutでの環境構築を考慮した形式で配布されています。
環境構築
前置きが長くなりました。 tipfyのサイト から"do-it-yourself archive"をダウンロード・展開して、projectディレクトリに移動します。
$ wget http://www.tipfy.org/tipfy.tar.gz $ tar xvf tipfy.1.0b1.tar.gz $ cd project
buildoutの環境を用意してくれるbootstrap.pyが含まれているので、これを バージョン2.5のPython で実行します。
$ /path/to/python25 bootstrap.py --distribute
binディレクトリにbuildoutというスクリプトが作成されます。このスクリプトのシバンを見ると、先ほど指定したバージョンのPythonと紐づいていることが確認できます。続けてこのbuildoutを実行します。
$ ./bin/buildout
buildoutは設定ファイルbuildout.cfgの内容をもとに環境構築を行います。tipfyが提供するbuildout.cfgには以下があらかじめ定義されています。詳しくは appfyレシピのドキュメント を参照するとよいでしょう。
- AppEngine SDKのダウンロード、展開
- 開発サーバ起動スクリプトなどをbinディレクトリに用意
- 依存ライブラリのダウンロード
これで環境は整いました。binディレクトリに dev_appserver スクリプトができているはずなので、これを実行してブラウザからアクセスしてみましょう。Hello Worldが表示されるでしょうか。
$ ./bin/dev_appserver $ open http://localhost:8080/ $ open http://localhost:8080/pretty
bin/dev_appserverやbin/pythonも、bin/buildoutと同じくPython2.5で実行されるようになっています。またライブラリを参照するパスも調整されているので、もしシステム領域にバージョン違いのライブラリがインストールされていたとしても問題にならないはずです。buildout様々ですね。
課題
とりあえずHello Worldは表示されましたが、さらに以下を改善したいところです。
- SDKのバージョンが最新ではない
本エントリ執筆時点の 最新SDK はバージョン1.4.3ですが、tipfyに含まれるbuildout.cfgの指定は1.4.2になっています。 - テストツールを導入したい
テストツールの nose と、そのAppEngine用プラグイン NoseGAE も合わせてセットアップされるようにしたいです。
これらについてはまた後日まとめてみようと思います。