2014-01-06 89 views
0

使用python 2.7和谷歌應用程序引擎我建立一個由多個模塊組成的網站。設置多個模塊python appengine

由此我的意思是我正在尋找像時尚應用程序中的每個模塊。

爲了實現我的目標,我使用includes(https://developers.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Includes)設置了多個* .yaml文件。 它似乎做我想要的東西,直到...沒有任何輔助模塊加載...我可以在本地玩python中的'導入'加載程序,但我正在尋找一些不太可靠的應用程序引擎部署者(以及Google服務器上)。 基本上我的問題是,我不知道如何'包括'所有的Python模塊(因爲他們生活在不同的目錄中)。我查看了文檔,似乎沒有解釋。

我不希望運行它們作爲分離的模塊,這可能是一種處理它的方法。 我可以打開它,但我遇到了類似的情況,但這種做法:如何在每個模塊中包含/打包通用代碼?

由於我什麼都沒有工作,我沒有包括示例代碼或yaml。

謝謝你的幫助!

@TimHoffman & @EzequielMuns

謝謝你,我實現了修改建議:

 
import os 
import sys 
sys.path.append("[absolute_path_to_be_sure]/used_app") 

,並得到:

 
    File "[...]/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 903, in load_module 
    raise ImportError('No module named %s' % fullname) 
ImportError: No module named DefaultHandler

似乎沙箱的方式獲得(該功能返回這似乎硬編碼)。 Defaulthandler是一個python類,它位於used_app根目錄的模塊中。試圖導入它時出現錯誤。

我的目錄結構如下:

 
- main_app 
    - app.yaml 
    - MyApp.py 
    - Handler.py 
- used_app 
    - DefaultHandler.py 
    - include.yaml (though I am not sure it is useful to me right now) 

Handler繼承DefaultHandler例如。

+0

我認爲你需要重新編寫你的問題,在你指的是python模塊的地方非常具體,你指的是[Google App Engine模塊](https://developers.google.com/appengine/docs/python /模塊/)。 你至少可以發佈你的目錄結構嗎? –

回答

1

首先,使用include.yaml沒有做任何事情。它旨在將更多的處理程序和其他有限數量的配置包括到您的主app.yaml中。

根據我的經驗,您的所有代碼需要在的主應用程序目錄下生存,但是如果您必須擁有符號鏈接(這對於第三方庫尤其有用)。那麼爲什麼不嘗試在主應用程序目錄中有used_app

僅供參考,我已經設置了這兩種佈局成功之前:

appdir/ 
    app.yaml 
    main.py 
    lib/ 
    package/ 
     __init__.py 
     module.py 

在這裏有沒有必要修改sys.path訪問package.moduleappdir是在PYTHONPATH。

有時候我不得不包括第三方庫爲lib子目錄,然後需要通過appengine_config.py被添加到sys.path

appdir/ 
    app.yaml 
    main.py 
    appengine_config.py 
    lib/ 
     awesomelibrary/ 
      __init__.py 
      thirdpartymodule.py 
    package/ 
     __init__.py 
     module.py 

隨着appengine_config.py

import sys, os 
base = os.path.dirname(__file__) 
sys.path.append(os.path.join(base, 'lib')) 

從而awesomelibrary.thirdpartymodule可導入的(以及lib/下的任何其他程序包/模塊)。

+0

我很害怕,謝謝。 –

+0

只需指出,模塊的代碼可以在appdir之外生存(我的兄弟生活在同級目錄中),而沒有任何符號鏈接。 – 0xc0de