我有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语句时仍然无法识别模块。
请告诉我如何解决这个问题。还有更好的方法吗?
答案 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模块上传到每个应用引擎模块