Eclipse で GAE 1.6 + Python 2.7 + Django 1.2

環境を作る機会があったので、メモとして残しておきます。main.pyに気をつければ、特に難しいことはないです。

インストール

当たり前の話ですが、EclipseおよびPyDev、Python 2.7、GAE SDK 1.6を入れておく必要があります。この際の注意点は、Djangoのインストールが必要ないということです。*1

プロジェクト

PyDev Google App Engine Project で、プロジェクトを作ってやります。空のプロジェクトでOKです。特に難しいところはないですが、${GOOGLE_APP_ENGINE}のパスは、覚えておくほうがいいです。

GAE

GAEで必要なファイルをカレントに作ります。

application: gae_application_id
version: 1
runtime: python27
api_version: 1
threadsafe: true

libraries:
- name: django
  version: "1.2"

handlers:
- url: /.*
  script: main.app
  • main.py
import os
import sys

path = 'src'
if path not in sys.path:
  sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'djangoproj.settings'

import django.core.handlers.wsgi
app = django.core.handlers.wsgi.WSGIHandler()

app.yamlは、Python2.7用になっています。main.pyでpathの設定していますが、これは、Eclipseのsrcディレクトリ内にDjangoをおくための処置です。srcディレクトリを使わないなら必要ありません。

Django

GAEのdjango-admin.pyを使います。Djangoのパス*2を通しておく必要があります。
Eclipseのsrcディレクトリ上で、

$ django-admin.py startproject {djangoproj(任意)}
$ cd djangoproj
$ django-admin.py startapp {djangoapp(任意)}

として、Djangoの環境を整えてやります。これで、好きなようにDjangoを使えるはずです。

一応、以降、確認用にコードを書いておきます。

  • src/djangoproj/djangoapp/views.py
from django.http import HttpResponse
def index(request):
  return HttpResponse("Hello World.")
  • src/djangoproj/settings.py
:
ROOT_URLCONF = 'djangoproj.urls'
:
INSTALLED_APPS = (
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.sites', 
  'django.contrib.messages',
  'djangoproj.djangoapp',
)
  • src/djangoproj/urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
  (r'^$', 'djangoproj.djangoapp.views.index'),
)

最終的なディレクトリはこんな感じ。

gae_application_id\
├ src\
│ └ djangoproj\
│  ├ djangoapp\
│  │ ├ __init__.py
│  │ ├ models.py
│  │ └ views.py
│  ├ __init__.py
│  ├ manage.py
│  ├ settings.py
│  └ urls.py
├ app.yaml
├ favicon.ico
└ main.py

Eclipseの実行環境を整えてやれば、たぶんこれで動くはず。:P

*1:GAE SDKDjangoを使うので、PATHや、PYTHONPATHを設定しておく必要があります。

*2:PATHに、${GOOGLE_APP_ENGINE}/lib/django_1_2/django/bin、PYTHONPATHに、${GOOGLE_APP_ENGINE}/lib/django_1_2