在 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 模块上传到每个应用引擎模块
我有 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 模块上传到每个应用引擎模块