在 appengine 模块之间共享 python 包

Share python package between appengine modules

我有 3 个应用程序引擎模块可以说是 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 语句时仍然无法识别模块。

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

您要部署的所有应用程序文件都必须位于与 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 模块上传到每个应用引擎模块