2014-10-27 20 views
0

我正在將python App Engine應用程序轉換爲使用本文中描述的模塊https://cloud.google.com/appengine/docs/python/modules/。我想在每個模塊中使用自定義處理程序作爲基類來添加一些常用功能。我是否需要在每個模塊中重複自定義處理程序代碼,或者是否有導入該類的方法?Google App Engine Python - 在不同模塊中使用相同的基本處理程序

例如,我想我的架構是這個樣子:

MyProject 
├── common 
│ ├── my_handler.py 
├── module1 
│ │ ├── module1.yaml 
│ │ ├── main.py 
├── module2 
│ │ ├── module2.yaml 
│ │ ├── main.py 

/common/my_handler.py是不是一個應用程序引擎模塊的一部分,看起來像這樣:

import webapp2 
class BaseHandler(webapp2.RequestHandler): 
    """ 
     BaseHandler for all requests 
    """ 
    pass 

然後在/module1/main.py文件,我想確實有這樣的事情:

import webapp2 

from common.my_handler import BaseHandler 

class module1Handler(BaseHandler): 
    def get(self): 
    self.response.headers['Content-Type'] = 'text/plain' 
    self.response.out.write('Hello, this is module 1!') 

app = webapp2.WSGIApplication(
    [('/', module1Handler), 
    ], 
    debug=True) 

這不會工作,服務器拋出一個錯誤,因爲它找不到common.my_handler.py:

ImportError: No module named common.my_handler 

該模塊似乎被沙箱。是否可以從/module1/main.py中導入/common/my_handler.py?

回答

2

有幾件事情你可以嘗試here如:

from ..common import BaseHandler

或添加路徑爲全局路徑:

sys.path.append(os.path.join(os.path.dirname(__file__), '..')) 
import common.my_handler as BaseHandler 
相關問題