Google App Engine の開発をbuildoutで行う¶
警告
このページは古い情報を含んでいます。より新しく書き直した Google App Engine (GAE/py) の開発環境をつくる を参照してください。
buildoutのrecipeにはGoogleAppEngineの開発用もあります。 ここではその環境をつくる方法を紹介します。
注釈
VirtualEnvでGoogleAppEngineの開発は出来ないらしいと聞いたのですが、 だれか成功している人は shimizukawa at gmail.com までご連絡下さい。
とりあえずbuildout.cfg¶
Python本体にzc.buildoutがインストールしてあれば、とりあえずbuildout.cfg だけあれば環境は構築出来ます。これがbuildoutの強みですね。
ということで、以下の内容をbuildout.cfgとしてどこなの空フォルダに作成 してください。
[buildout]
parts = prepare debug app_lib gae_sdk gae_tools test
[prepare]
recipe = iw.recipe.cmd:py
on_install = true
cmds =
>>> buildout_dir = buildout.get('directory', '.')
>>> path = os.path.join(buildout_dir, 'app')
>>> if not os.path.exists(path):
... os.makedirs(os.path.join(buildout_dir, 'app'))
... open(os.path.join(path, 'app.yaml'), 'at').write(
... 'application: appname\n'
... 'version: 1\n'
... 'runtime: python\n'
... 'api_version: 1\n'
... 'handlers:\n'
... '- url: .*\n'
... ' script: main.py\n'
... )
... open(os.path.join(path, 'main.py'), 'at').write(
... """import sys; sys.path.insert(0, './distlib.zip')""")
[debug]
recipe = zc.recipe.egg:script
eggs = ipython
extra-paths =
${gae_tools:extra-paths}
${gae_tools:sdk-directory}/lib/django
${gae_tools:sdk-directory}/lib/webob
${gae_tools:sdk-directory}/lib/yaml/lib
${buildout:directory}/app
interpreter = py
[app_lib]
recipe = appfy.recipe.gae:app_lib
lib-directory = app/distlib
use-zipimport = true
eggs =
Flask
feedparser
twitter
BeautifulSoup
ignore-globs =
*.c
*.pyc
*.pyo
*/test
*/tests
*/testsuite
*/django
*/sqlalchemy
simplejson/_speedups.py
ignore-packages =
distribute
setuptools
easy_install
site
pkg_resources
[gae_sdk]
recipe = appfy.recipe.gae:sdk
url = http://googleappengine.googlecode.com/files/google_appengine_1.3.5.zip
clear-destination = true
[gae_tools]
recipe = appfy.recipe.gae:tools
sdk-directory = ${gae_sdk:destination}/google_appengine
extra-paths =
app/lib
app/distlib.zip
[test]
recipe = pbp.recipe.noserunner
eggs =
${app_lib:eggs}
nose
nosegae
extra-paths = ${debug:extra-paths}
environment = nose-environment
defaults = --gae-application=${buildout:directory}/app
[nose-environment]
NOSE_WITH_GAE = true
NOSE_WHERE = ${buildout:directory}/app
保存したらいつも通り以下のコマンドで環境を構築します:
$ python /tmp/bootstrap.py
$ bin/buildout
はい、完了です。
GoogleAppEngineのパッケージも自動的に最新を取ってきますし、他のPython 環境に影響することもありません。このプロジェクトではeggsにjinja2と feedparserを同梱していますが、このライブラリはzip圧縮して一緒に GAEにアップロードされるようにしています。サードパーティーパッケージ を使うのも気軽にいけますね。
一応、空のapp.yamlとpath調整するだけのmain.pyを作るように仕掛けていますが、 中身は空です。中身は各自で用意して下さい。
サーバーを起動してappspotにアップロード¶
あとは開発して、動作確認して、サイトにアップロードするわけですが、それぞれ 以下のように行うことが出来ます。
サーバー起動:
$ bin/dev_appserver app
アップロード:
$ bin/appcfg update app
非常に楽ちんですね。
警告
このページは古い情報を含んでいます。より新しく書き直した Google App Engine (GAE/py) の開発環境をつくる を参照してください。