GAEがSDK1.6でPython2.7に対応したが既存のアプリを2.7にはDatastoreを利用している場合、移行できない。また local server は2.7に対応していない。
既存のアプリケーションで Datastore を一切使用していない場合
app.yaml を変更して
runtime: python27
# runtime: python
api_version: 1
threadsafe: true #マルチスレッドで動かす
- url: .*
# script: main.py
script: main.app
python2.7 に移行することができるのかもしれないが、Datastoreを使用していた場合 Deploy の際、以下のエラーとなる。
Error 400: --- begin server output ---
The 'python27' runtime is only supported for apps using the High Replication Datastore.
Local Serverは2.7対応していないがコマンドラインからの実行もあるのでベースは2.7に変更することにした。
インストールされているバージョンを確認
$ port select --list python
Available versions for python:
none
python25 (active)
python25-apple
python26-apple
python27
2.7 に変更
$sudo port select python python27
Password:
Selecting 'python27' for 'python' succeeded. 'python27' is now active.
参考:
macports python_select command not found
GoogleAppEngineLauncherは2.5固定
(python2.7に対応していない。Preferenceを2.7に変更しても2.5に戻される)

*** Running dev_appserver with the following flags:
--admin_console_server= --port=8080
Python command: /opt/local/bin/python2.5
WARNING 2011-12-11 05:39:58,528 urlfetch_stub.py:111] No ssl package found. urlfetch will not be able to validate SSL certificates.
WARNING 2011-12-11 05:39:58,828 rdbms_mysqldb.py:90] The rdbms API is not available because the MySQLdb library could not be loaded.
INFO 2011-12-11 05:39:59,444 dev_appserver_multiprocess.py:637] Running application dev~snsimglink on port 8080: http://localhost:8080
WARNING 2011-12-11 05:40:10,308 py_zipimport.py:139] Can't open zipfile /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/setuptools-0.6c11-py2.5.egg-info: IOError: [Errno 13] file not accessible: '/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/setuptools-0.6c11-py2.5.egg-info'
INFO 2011-12-11 05:40:11,033 dev_appserver.py:2753] "GET / HTTP/1.1" 200 -
HRD
Error 400: --- begin server output ---
The 'python27' runtime is only supported for apps using the High Replication Datastore.
--- end server output ---
If deploy fails you might need to 'rollback' manually.
The "Make Symlinks..." menu option can help with command-line work.
*** appcfg.py has finished with exit code 1 ***
参考:
【備忘録】 GAEでPython2.5からPython2.7へマイグレーションするには
GAEでのDjangoの使い方は2通りある(と思って)います。
フレームワークとして使う(というか、生Djangoとして使う)
この場合settings.pyが必要になります。
書くべき中身は渡邉さんの引用したURLに書いてある通りですが、元ネタはDjangoの配布物に含まれています
ので、これをコピーして書き換えることになります(多分・・・自信無いですが一応動いた実績あり)。
Djangoのテンプレートエンジンをwrapした、google.appengine.ext.webapp.templateとして使う
GAE/Py2.5でそうしていた場合、GAE/Py2.7に切り替える際、あなたはプログラム上は何も変える必要がありません(※)。
Python2.7環境で上記をimportすると、中身はDjango1.2になっているからです。
やるべきことはDjango0.9.6と1.2の差分であるテンプレートエンジンの挙動の違いを、テンプレート側で
吸収してあげることです(デフォルトエスケープの扱いとか)。
※Python2.7対応はまた別の話です。