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 も合わせてセットアップされるようにしたいです。

これらについてはまた後日まとめてみようと思います。

参考にさせていただいたページ

関連エントリ

blog comments powered by Disqus