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”,但在使用 import 语句时仍然无法识别模块。

请让我知道如何解决这个问题。还有更好的方法吗?

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 回答