在appengine模块之间共享python包

时间:2015-03-25 12:43:07

标签: python google-app-engine gae-module app-engine-modules

我有3个appengine模块让我们说modA(默认模块包含app.yaml),modB和modC,它们在'common'目录中共享数据存储区实体和一些实用程序函数和外部库,如下所示:

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

要在模块之间共享'common',我使用以下代码创建了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语句时仍然无法识别模块。

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

1 个答案:

答案 0 :(得分:4)

您要部署的所有应用程序文件必须与app.yaml位于同一目录中。所以你可能想做的是在你的每个模块文件夹下面创建一个指向/ common

的符号链接文件夹
- modA
  - app.yaml
  - common -> ../common
- modB
  - modB.yaml
  - common -> ../common
- modC
  - modC.yaml
  - common -> ../common
- common
  - __init__.py

appcfg.py update 将遵循符号链接并将/ common模块上传到每个应用引擎模块