2013-04-01 33 views
2

我正在使用Flask開發Google App Engine項目。燒瓶然後使用Jinja2。當我將Flask及其所需的模塊放入我的項目的根文件夾時,服務器啓動就好了。但是,我想清理一下目錄,所以我將Flask和其他模塊(包括Jinja2)移動到名爲'lib'的子目錄中。所以我的計劃是這樣的:GAE - Flask無法從子目錄導入Jinja2?

app.yaml 
main.py 
myapp 
    __init__.py 
    view.py 
    blahblah.py 
lib 
    flask 
    jinja2 
    OtherModules 

然後在應用程序的main.py文件,我添加使用sys.path.insert(0, 'lib')的目錄。使用這種方法Flask似乎可以正常導入,但Flask似乎無法在lib文件夾中找到Jinja2。當試圖訪問我的運行dev_appserver試驗的圖我得到:

File "lib/flask/__init__.py", line 19, in <module> 
    from jinja2 import Markup, escape 
ImportError: No module named jinja2 

我怎樣才能讓瓶找到的Jinja2(並允許其他模塊找到他們的需求),同時保持它們在lib目錄下,不必編輯模塊來調整路徑?

下面是萬一我main.py文件中不會有必要知道:

import sys 
sys.path.insert(0, 'lib') 

from google.appengine.ext.webapp.util import run_wsgi_app 
from myapp import app 

run_wsgi_app(app) 

回答

2

爲了包括神社在你的app.yaml文件,你的App Engine應用程序中添加這些行

libraries: 
    - name: jinja2 
    version: latest 

Documentation包括更多的可用庫。

爲了將其用於您的本地服務器,您應該將這些也安裝到您的系統。在UNIX類的系統將是

sudo easy_install jinja2 

附加信息:有一個開源framework稱爲GAE-INIT,它結合了你的技術堆棧,並提供應用程序引擎Web服務的一系列自動化和良好做法。也許值得看看它。