dev_appserver.pyに関するメモ
読了まで:約2分
概要: Google App Engine のdev_appsever.py
に関するメモ
注意
この記事は今日 Google App Engine のdev_appserver.py
で大はまりした事についてまとめた記事なのですが、 とりあえず解決した本人も何が悪かったのかよく分かってないため、 要領を得ない記事になってるかもしれません。
したかった事
要するにこういうディレクトリ構成でdev_appserver.py
を動かしたかった
~/dev/{project}
# アプリケーション関連ファイルのディレクトリ
app/
{appname}/
app.yaml
script.py
...etc
# アプリケーションの実行に必要なファイルのディレクトリ
lib/
{project}/
{module}.py
__init__.py
...etc
できなかった事
上記で言うapp/project/script.py
で、lib/project
へのパスを通しても、 なぜかdev_appserver.py
経由では読み込んでくれないという現象に遭遇した。
ちなみにapp/project/script.py
を shell から直接実行した場合はきちんと動く
仮説
もしかすると、dev_appserver.py
は任意のディレクトリからはライブラリを読めない?
検証
とりあえず上記で言うlib/project
をapp/appname/
以下にコピーしたところ問題なく動いた。
とりあえずの解決策
lib/project
の内容は、複数の GAE Application で共有したい、と考えていたので、 とりあえずapp/appname/
以下にlib/project
のシンボリックリンクを貼ることによって何とかなった。
要するにこんな感じ。
~/dev/{project}
app/
{appname}/
app.yaml
script.py
{project} # これがシンボリックリンク
lib/
{project}/ # ここがシンボリックリンクのリンク先
{module}.py
__init__.py
分かってないこと
色々と検索してみたものの、上記の現象がdev_appserver.py
の仕様なのか、 バクなのか、それとも俺のやり方が悪かったのか、というのはよく分かってません。
まあとりあえずはシンボリックリンクでなんとかなったのでよしとしよう。
ちなみに
これを解決するまでに一時間半かかりました。
で、とりあえず解決はできたので、長いこといってなかった床屋へ行き、 サッパリして帰ってきた後この記事を書いてます。
とりあえず自分も今回の件についてよく分かってないので、 断片的に情報をまとめてみた次第。
たぶん他の人には分かりづらいと思うけど、自分用のメモということで。
#FIXME