2

以下に示すように、3 つの appengine モジュールがあり、modA (デフォルトのモジュールには app.yaml が含まれています)、modB、および modC があり、データストア エンティティといくつかのユーティリティ関数、および外部ライブラリを「共通」ディレクトリで共有しています。

- modA
  - app.yaml
  - appengine_config.py
- modB
  - modB.yaml
  - appengine_config.py
- modC
  - modC.yaml
  - appengine_config.py
- common
  - __init__.py

モジュール間で「共通」を共有するために、次のコードで appengine_config.py ファイルを作成しました。

#!/usr/bin/env python

import sys
import os
import logging

logging.info("LOADING CONFIG FILE")

PARENT_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0, os.path.join(PARENT_DIR, 'common'))

logging.info(sys.path)

コンソールでは、sys.path に「common」が表示されますが、インポート ステートメントを使用すると、モジュールを認識できません。

これを修正する方法を教えてください。また、これを行うためのより良い方法はありますか?

4

1 に答える 1

4

デプロイするすべてのアプリケーション ファイルは、app.yaml と同じディレクトリにある必要があります。したがって、おそらくやりたいことは、各モジュールフォルダーの下に /common を指すシンボリックリンクフォルダーを作成することです

- modA
  - app.yaml
  - common -> ../common
- modB
  - modB.yaml
  - common -> ../common
- modC
  - modC.yaml
  - common -> ../common
- common
  - __init__.py

appcfg.py の更新は、シンボリック リンクをたどり、/common モジュールを各アプリ エンジン モジュールにアップロードします。

于 2015-03-25T16:29:55.590 に答える