7

したがって、私のディレクトリ構造は次のようになります。

\Project-Dir\
|- lib\
|  |- flask\
|  |- ...
|- module1_dir\
|  |- __init__.py
|  |- app.yaml
|  |- app.py
|  |- ...
|- module2_dir\
|  |- __init__.py
|  |- app.yaml
|  |- app.py
|  |- ...
|- ...

中身app.py

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../lib')))

同じルート ディレクトリ内に 2 つのモジュールがあります。これらは両方とも一緒に App Engine にデプロイされます。また、同じライブラリを共有しています。ライブラリはすべてかなり強力なので、共有ディレクトリ (lib) に配置しようとしています。

2 つの .yamlから実行dev_appserver.pyして渡しています。\Project-Dir\私のは、ディレクトリsys.pathを含めるようにうまく設定されています。それでも、サンドボックスはライブラリが存在しないlib\と頑固に主張しているようです。lib\

どこかで設定変更のような小さなものを見逃しているだけだと確信しています。それとも、App Engine は本当にそのような設定をサポートしていないのでしょうか?

編集: の外で実行すると、インポートは正常に機能しdev_appserver.pyます。

4

1 に答える 1

5

同じ問題に直面した後、Google サポート エンジニアと話をしました。残念ながら、GAE はこの種のセットアップをサポートしていません。

モジュール API を使用すると、モジュール 1 とモジュール 2 は、個別の自己完結型インスタンスとして個別の Python 仮想環境内で実行されます。親ディレクトリの内容を「見る」ことはできません。sys.path を変更しても違いはありません。

次の 2 つの解決策があります。

(a) 「lib」フォルダーを「module1_dir」と「module2_dir」の両方に配置して複製します。

(b) モジュール ファイルをルート ディレクトリに直接配置します。

于 2015-08-03T15:51:06.317 に答える