GAE - Flask无法从子目录导入Jinja2?

时间:2013-04-01 20:34:04

标签: python google-app-engine import flask jinja2

我正在使用Flask开发Google App Engine项目。 Flask然后使用Jinja2。当我将Flask及其所有必需的模块放入项目的根文件夹时,服务器启动就好了。但是,我想稍微清理一下目录,所以我将Flask和其他模块(包括Jinja2)移动到一个名为'lib'的子目录中。所以我的项目看起来像:

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

如何让Flask找到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)

1 个答案:

答案 0 :(得分:2)

为了在app.yaml文件中的app引擎应用程序中包含Jinja,请添加以下行

libraries:
  - name: jinja2
  version: latest

Documentation包含更多可用库。

要将它用于本地服务器,您还应将它们安装到您的系统中。在类似unix的系统中,它将是

sudo easy_install jinja2

其他信息:有一个名为gae-init的开源framework,它结合了您的技术堆栈,并为应用引擎Web服务提供了一系列自动化和良好实践。也许值得一看。