カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

dev_appserver.pyに関するメモ

概要: 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の仕様なのか、 バクなのか、それとも俺のやり方が悪かったのか、というのはよく分かってません。

まあとりあえずはシンボリックリンクでなんとかなったのでよしとしよう。

ちなみに

これを解決するまでに一時間半かかりました。

で、とりあえず解決はできたので、長いこといってなかった床屋へ行き、 サッパリして帰ってきた後この記事を書いてます。

とりあえず自分も今回の件についてよく分かってないので、 断片的に情報をまとめてみた次第。

たぶん他の人には分かりづらいと思うけど、自分用のメモということで。