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