EclipseでGoogleAppEngineを開発する

Pythonの開発環境にいいものが無いかと調べたところ、「PyDev」というEclipseプラグインがあることを知りました。
現実逃避も兼ねて調査してみました。

環境

今回はEclipse3.3.1.1を用意しました。
またPython2.5を事前にインストールしておきました。

インストール

プラグインサイトを用意してくれているので、Help>Software Update>Find an install..>Search for new features to install>New Remote Site..で

Name:PyDev
URL:http://pydev.sourceforge.net/updates

とすればインストールできます。

初期設定

必要な初期設定は、python.exeの場所の設定だけです。
Window>Preference>Pydev>Interpreter -Python を選んで、New..ボタンからpython.exeの場所を設定します。
WindowsPythonをデフォルトインストールすると、c:\Python25\python.exeになると思います。

プロジェクト作成

正しくインストールされていれば、Pydevパースペクティブが選択できます。
Javaと同じく、File>New>Pydev Projectを選択します。
プロジェクト名やPythonのバージョンを選べば、プロジェクトが出来ます。


ひとまずここまでで、Eclipse上でPython開発できます。

GoogleAppEngineの開発環境

まず、GoogleAppEngineを入手します。
http://appengine.google.com/


インストールすると、C:\Program Files\Google\google_appengine(Windowsの場合)にひとしきりインストールされています。
ここのディレクトリから

google
lib
templetes
appcfg.py
dev_appserver.py
VERSION

のファイルとフォルダを、先ほど作成したプロジェクト直下にコピーします。
次に、GoogleAppEngineで登録してある名前と同じ名前のフォルダをプロジェクト直下に作成し、それをソースフォルダにします。
(つまり、普通にSDKを使うとの同じフォルダ構成にする)

例えば、fooというアプリをgoogleに登録してある場合、

FooProject   <--プロジェクト
 |--foo   <--ソースフォルダ
 |   |-foo.py
 |   |-app.yml
 |   |-index.yaml
 |  
 |--google
 |--lib
 |--templates
 |--appcfg.py
 |--dev_appserver.py
 |--VERSION

という構成になります。

実行

dev_appserver.pyがサーバ起動用ファイルなので、右クリック>Run As>Python Run とします。
これで実行できるのですが、はじめはエラーで落ちると思います。これは起動引数(アプリ名)が足りないためです。
したがって、起動引数を設定します。


右クリック>Run As>Open Run Dialog..で実行ダイアログを開き、ArgumentsタブのProgram arguemntsのところにアプリ名(この場合foo)を入れて実行します。


またこれがめんどくさい場合は、dev_appserver.pyを直接編集します。
ファイルを開き、下のほうにある

if __name__ == '__main__':
  sys.path = EXTRA_PATHS + sys.path
  script_path = os.path.join(DIR_PATH, DEV_APPSERVER_PATH)
  execfile(script_path, globals())

というところに、「sys.argv.append("foo") 」の行を足します。

if __name__ == '__main__':
  sys.path = EXTRA_PATHS + sys.path
  script_path = os.path.join(DIR_PATH, DEV_APPSERVER_PATH)
  sys.argv.append("foo")  
  execfile(script_path, globals())

起動引数を増やしたい場合は、同じやり方で足して行けばいけると思います。


実行後、ブラウザでhttp://localhost:8080にアクセスすれば、app.ymlのscriptに記述してあるスクリプトが実行されます。

感想

使ってみたところ、コードアシスト効きまくったり、ブレークポイントもつけてデバックすることができたりと、Java開発と遜色無い感じで好感度かなり高いです。
Javaからの移転組にはぜひ試して頂きたいと思いました。

   / ̄ ̄\ 
 /   _ノ  \ 
 |    ( ●)(●) 
. |     (__人__)   ここまで揃ったら作れるだろ…
  |     ` ⌒´ノ    常識的に考えて…
.  |         } 
.  ヽ        } 
   ヽ     ノ        \ 
   /    く  \        \ 
   |     \   \         \ 
    |    |ヽ、二⌒)、          \