【问题标题】:GAE - Flask can't import Jinja2 from subdirectory?GAE - Flask 无法从子目录导入 Jinja2?
【发布时间】:2013-03-22 23:53:10
【问题描述】:

我正在使用 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)

【问题讨论】:

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


    【解决方案1】:

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

    libraries:
      - name: jinja2
      version: latest
    

    Documentation 包含更多可用的库。

    为了将它用于您的本地服务器,您还应该将它们安装到您的系统中。在类似 Unix 的系统中,它会是

    sudo easy_install jinja2
    

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

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      相关资源
      最近更新 更多