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

标签 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 测试上的 View 时,我得到:

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)

最佳答案

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

libraries:
  - name: jinja2
  version: latest

Documentation用于包含更多可用的库。

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

sudo easy_install jinja2

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

关于python - GAE - Flask 无法从子目录导入 Jinja2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15751369/

相关文章:

java - 将 Java 库导入 Eclipse

python - 如何在 matplotlib 极坐标图中旋转 theta 刻度标签?

python - 如何在python中删除firebase电子邮件身份验证用户?

google-app-engine - AppEngine 数据存储中的不等式过滤器

java - 静态导入的工作原理

postgresql - Postgres COPY TO NULL 整数

python - 网格数据上的高效卡尔曼滤波器实现

python - Gunicorn --reload 不适用于具有本地存储库的 Ubuntu

python - 如何在 Python 3.7.1 中禁用然后重新启用键盘/鼠标

python - 执行函数而不向其发送 'self'