在Google App Engine上部署Flask应用程序时出现问题

时间:2014-01-03 01:57:54

标签: python json google-app-engine deployment flask

我正在尝试使用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的绝对路径,但似乎没有什么区别。

2 个答案:

答案 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现在让它非常简单:

https://console.developers.google.com/start/appengine