GAE で Python 2.7 + Django 1.3 を使う
Google App Engine で開発。第五弾。
Python 2.7 が使えるということなので使ってみます。ついでに、Django 1.3 も使ってみます。
GAE Launcher をインストールすると下記に Django 1.3 が置かれています。
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/django_1_3
django/bin/django-admin.py を使えばプロジェクトの作成ができます。ひとまず、django-admin.py に実行権限を付与して使っていますが、もっと良い設定の仕方があるように思います。
$ chmod +x django-admin.py
django-admin.py を実行する際に django.core を求められるので、先に示したパスを PYTHONPATH に追加して実行しています。これももっと良い設定の仕方があるように思いますが、他のことをやりたいので調査は保留です。
ひとまず、django-admin.py は実行できました。
次に PyDev での設定です。
プロジェクトの External Libralies に ${GOOGLE_APP_ENGINE}/lib/django_1_3 が設定されていることを確認します。また、Interpreter に 2.7 を使うようにします。
次はプロジェクトのコードを作成します。
app.yaml は下記のようになります。
application: clock version: 1 runtime: python27 api_version: 1 threadsafe: false libraries: - name: django version: "1.3" handlers: - url: /.* script: main.py
threadsafe を true にした場合は、script は main.py ではなく、main.app になります。threadsafe を true にして、Django と併せて使用しようとしたところ main モジュールに app がないよ、とエラーになってしまったので、ひとまず false にして他を確認することにします。
settings.py は下記を変更します。
ROOT_URLCONF = 'urls'
main.py は下記のようにします。
from google.appengine.dist import use_library use_library('django', '1.3') import os os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' import django.core.handlers.wsgi from google.appengine.ext.webapp import util def main(): application = django.core.handlers.wsgi.WSGIHandler() util.run_wsgi_app(application) if __name__ == '__main__': main()
ひとまず、これで動きました。(manage.py を使わず dev_appserver.py でサーバを動かしています。)