ほんじゃーねっと

おっさんがやせたがったり食べたがったりする日常エッセイ

Ubuntu9.10でGoogle App Engineのアップデートエラーを解決

Google App Engine 楽しいですね。

表題の件、僕のPATHの設定か何かが悪いのかもしれないけど、普通にappengineを配置して

cd google_appengine
./dev_appserver.py プロジェクト名

すると下記のようなエラーが表示される。

ERROR    2010-03-01 17:18:14,354 appcfg.py:197] Could not find version file at /usr/lib/pymodules/python2.6/google/../VERSION
ERROR    2010-03-01 17:18:14,354 appcfg.py:197] Could not find version file at /usr/lib/pymodules/python2.6/google/../VERSION
INFO     2010-03-01 17:18:14,355 appengine_rpc.py:159] Server: appengine.google.com
ERROR    2010-03-01 17:18:14,355 appcfg.py:197] Could not find version file at /usr/lib/pymodules/python2.6/google/../VERSION
ERROR    2010-03-01 17:18:14,356 appcfg.py:321] Could not determine if the SDK supports the api_version requested in app.yaml.
ERROR    2010-03-01 17:18:14,370 appcfg.py:197] Could not find version file at /usr/lib/pymodules/python2.6/google/../VERSION
INFO     2010-03-01 17:18:14,370 appcfg.py:349] Skipping update check


色々調べてみたところ、
Ubuntu9.10だとUbuntu Oneでプロトコルバッファを使うため、
自動的にgoogle.protobufというpythonモジュールがインストールされるみたい。
それが上記のエラーにある /usr/lib/pymodules/python2.6/ 以下に入るのだけど、
どうもVERSIONというファイルを探す時にappengineのgoogleモジュールではなく、
/usr/lib/... のgoogleモジュールを探しに行って、そこで「ないよー」となっているみたい。


appengineのソースを確認したら、下記の場所に問題の箇所っぽいところがあった。

google_appengine/google/appengine/tools/appcfg.py の 192行目付近

version_filename = os.path.join(os.path.dirname(google.__file__),
VERSION_FILE)


これを下記のように絶対パスに変更するとアップデートがうまくいった。

version_filename = os.path.join("/...(絶対パス).../google_appengine/google",
VERSION_FILE)


もう少しパスを指定するマシな方法があると思うけど、とりあえずこれでしのいでる。


アップデートの度に必要になるので、ここにメモしておく。