2015-03-25 121 views
2

我有3個appengine模塊可以說modA(默認模塊 - 包含app.yaml),modB和modC,它們共享數據存儲實體和一些實用功能和外部庫,如圖所示在下面的:在appengine模塊之間共享python包

- 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「共同」。路徑,但在使用import語句時仍然無法識別模塊。

請讓我知道如何解決這個問題。還有更好的方法來做到這一點?

+1

按照[這裏]的答案(http://stackoverflow.com/a/15653005/203455),一種方法是在每個模塊中創建鏈接到公用文件夾。我嘗試了這個方法,它工作。無需將模塊添加到PYTHONPATH中。 但是,如果有人有另一種方法,也是爲什麼上述事情發生的原因。請回答。 – sshntt 2015-03-25 14:30:14

回答

4

要部署的所有應用程序文件必須與app.yaml位於同一目錄中。所以,你可能想要做的是創建每個模塊的文件夾下符號鏈接文件夾指向/共同

- modA 
    - app.yaml 
    - common -> ../common 
- modB 
    - modB.yaml 
    - common -> ../common 
- modC 
    - modC.yaml 
    - common -> ../common 
- common 
    - __init__.py 

appcfg.py更新將遵循符號鏈接和上傳/通用模塊爲每個應用程序引擎模塊