前回、sessanの日記でGoogle App Engine上でdjangoを使いたい場合にdjango nonrelを使えば良さそうだと調査した結果を紹介した。
今回は、実際にdjango nonrelの環境をGoogle App Engineの開発環境上に作り、空っぽのアプリを動かすところまでやろうと思う。
基本的には以下のdjango nonrelのサイトの通り。
djangoappengine - Django App Engine backends (DB, email, etc.) | All Buttons Pressed
ただ、その前にMac OSX上でpython2.5をインストールするのと、Google App EngineのSDKをインストールしておく必要がある。
python 2.5のインストール
Google App Engineは実験的にpython 2.7をサポートし始めているが、まだ、正式にはサポートしていない。なので、今開発をする場合、python2.5を使ってプログラミングする必要がある。
Mac OSXにもpythonはインストールされているが、自分のLion環境ではデフォルトのバージョンは2.7になっていた。
なので、まずはMacPortsを使ってpython2.5をインストールしておく。
これは簡単でMacPortsが入っていれば以下のコマンドを打つだけ。
sudo port install python25
python_selectのインストール
python25をインストールしただけでは、それがデフォルトとして設定されることはなく、rubyのrvmみたいにpythonのバージョンを切り替えるためのコマンドを使う必要がある。そのためにpython_selectを使う。
僕の場合は、なぜかpython_selectが最初から入っていたのでインストールはしていないが、これもMacPortsを使ってインストール出来る。
sudo port install python_select
python_selectはportコマンドから以下のように使う
- 選択可能なpythonのバージョンを見たいとき
> port select --list python Available versions for python: none python25 (active) python25-apple python26 python26-apple python27 python27-apple
- システムで使うデフォルトのpythonのバージョンをpython 2.5にしたいとき
> sudo port select --set python python25 Password: Selecting 'python25' for 'python' succeeded. 'python25' is now active.
ちなみに、僕はpythonの開発では、有料だけど、JetBrains社のPyCharmが便利なので使っている。
Python IDE & Django IDE for Web developers : JetBrains PyCharm
PyCharmで使うpythonのバージョンを追加する場合は、[Preferences] -> [Python Interpreter]の画面で[add]したのち、それを設定する。ちなみにこの設定はPyCharmのプロジェクトごとの設定である。
ここでもインストールしたpython 2.5を使用するように設定しておく。
Google App Engine SDKのインストール
Google App Engine SDKは以下からダウンロードしてインストールする。
インストーラに従ってインストールするだけ。
django nonrel用の各種ファイルをGoogle App Engine用のプロジェクトに追加
djangoappengine - Django App Engine backends (DB, email, etc.) | All Buttons Pressed
上のサイトのInstallのところに従って、以下のzipファイルをダウンロード。
(Mercurialでリポジトリからcloneを取ってきても良い)
- django-nonrel
- djangoappengine
- djangotoolbox
- django-autoload
- django-dbindexer
- django-testapp
さらに手順に従って、zipファイルを解答したフォルダから以下のようにGoogle App Engine用のプロジェクトフォルダに中身をコピーしていく。
- django-nonrel/django =>
/django - djangotoolbox/djangotoolbox =>
/djangotoolbox - django-autoload/autoload =>
/autoload - django-dbindexer/dbindexer =>
/dbindexer - djangoappengine =>
/djangoappengine
注意すべきなのは、djangoappengineだけは、解凍したフォルダ(wkornewald-djangoappengine-tip)をリネームして、djangoappengineフォルダとしてプロジェクトのサブフォルダとして追加する点。
それ以外は、解凍したフォルダの同名のサブフォルダをプロジェクトのフォルダにコピーすればよい。
結局、以下のようなフォルダ構成になる。
/django /djangotoolbox /autoload /dbindexer /djangoappengine
僕の場合は、django-testappのルートディレクトリから以下のファイルもプロジェクトのルートフォルダ内にコピーした。(つまり全部コピーした)
- __init__.py
- app.yaml
- cron.yaml
- index.yaml
- idexes.py
- LISCENSE
- manage.py
- settings.py
- templates (→これはファイルではなくフォルダ)
- urls.py
app.yamlの設定がpython27を使うようになっていたので、Google App Engineのデフォルトのpythonを使うように修正する。
- app.yaml(抜粋)
runtime: python27
となっていたのを、
runtime: python
に修正。
プロジェクトの起動と動作確認
この後、PyCharmでこのプロジェクトを読み込み、プロジェクトを起動する。
ちなみに、djangoappengine - Django App Engine backends (DB, email, etc.) | All Buttons PressedによるとGoogle App Engine用のdev_appserver.pyを使って起動するのはダメだそうだ。django用のmanage.pyを使って起動するのが正しいやり方だと説明されている。
PyCharmでプロジェクトをdjango用のプロジェクトと認識させるためには、まず、djangoサポートをenableに設定しておく必要がある。
さらに、起動するための設定を行う。
まずは、PyCharmの上部のメニューから起動の設定を行う。下の写真のように「Edit Configurations」を選択する。
そして、左上の「+」ボタンからdjango serverを起動するための設定を追加し、デフォルトのままアプリ名だけ記入する。(下の画像は、django testsを選択しているけど、django serverを選択する。)
そしたら、再生ボタンを押してdjangoアプリを起動する。
起動できたら、以下のような画面になる。
これで、今日は終わり。
次回は、djangoの機能を使ってDBにデータを保存する部分を試してみようと思う。