我正在尝试使用Windows在GAE上部署Flask应用。它在本地运行良好但在我尝试在GAE上运行时会遇到问题。
首先我在flask \ json.py中收到此错误:
from itsdangerous import json as _json
ImportError:没有名为itsdangerous的模块
在同一目录中下载和解压缩https://pypi.python.org/pypi/itsdangerous无法解决问题。如果我只是抓住它的危险。并把它放在烧瓶目录中,我得到:
_slash_escape = '\\/' not in _json.dumps('/')
AttributeError:'module'对象没有属性'dumps'
我读过它可能是由于json.py文件存在冲突,但我也尝试使用导入json的绝对路径,但似乎没有什么区别。
答案 0 :(得分:8)
您将itsdangerous.py
放在错误的目录中。因为json.py和itsdangerous.py都存在于/ flask目录中,所以itsdangerous.py将导入正确的/flask/json.py内容。
GAE官员doc提到了一种包含第三方库的方法:
您可以在应用程序中包含其他纯Python库 将代码放入应用程序目录。如果你做一个象征性的 链接到应用程序目录中的模块目录appcfg.py 将跟随该链接并在您的应用中包含该模块。
显然,这是一个糟糕的解决方案,因为我们不想将我们使用的库与我们编写的代码混合在一起。社区找到了更好的方法。
我建议你使用一个gae-flask项目模板(例如flask-appengine-template)或者至少遵循一些项目结构。您可以将所有这些第三方库放在/ lib这样的目录下,并将'/ lib'添加到sys.path中。实际上,烧瓶 - appengine-template模板包括常见的烧瓶模块,默认情况下它是危险的。
示例代码:
import os
import sys
sys.path.insert(1, os.path.join(os.path.abspath('.'), 'lib'))
import application
答案 1 :(得分:8)
Google现在让它非常简单: