Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Google应用程序引擎上部署Flask应用程序时出现问题_Python_Json_Google App Engine_Deployment_Flask - Fatal编程技术网

Python 在Google应用程序引擎上部署Flask应用程序时出现问题

Python 在Google应用程序引擎上部署Flask应用程序时出现问题,python,json,google-app-engine,deployment,flask,Python,Json,Google App Engine,Deployment,Flask,我正在尝试使用Windows在GAE上部署Flask应用程序。它在本地运行良好,但当我尝试在GAE上运行时遇到问题 首先,我在flask\json.py中得到这个错误: from itsdangerous import json as _json ImportError:没有名为ITS的模块 在同一目录下下载和解包并不能解决此问题。如果我抓取itsDanger.py并将其放入flask目录,我会得到: _slash_escape = '\\/' not in _json.dumps('/')

我正在尝试使用Windows在GAE上部署Flask应用程序。它在本地运行良好,但当我尝试在GAE上运行时遇到问题

首先,我在flask\json.py中得到这个错误:

from itsdangerous import json as _json
ImportError:没有名为ITS的模块

在同一目录下下载和解包并不能解决此问题。如果我抓取itsDanger.py并将其放入flask目录,我会得到:

_slash_escape = '\\/' not in _json.dumps('/')
AttributeError:“模块”对象没有属性“转储”


我已经了解到这可能是由于json.py文件冲突造成的,但我也尝试过为导入json使用绝对路径,这似乎没有什么区别。

您将
itsDanger.py
放在了错误的目录中。由于json.py和itsDanger.py都存在于/flask目录中,因此itsDanger.py将导入正确目录的/flask/json.py intead

GAE官员提到了一种包含第三方库的方法:

您可以通过以下方式在应用程序中包含其他纯Python库: 将代码放入应用程序目录中。如果你做一个象征性的 链接到应用程序目录appcfg.py中的模块目录 将跟随链接并将模块包含在您的应用程序中

显然,这是一个糟糕的解决方案,因为我们不想将我们使用的库与我们编写的代码混合在一起。社区已经找到了更好的方法

我建议您使用gae flask项目模板(例如),或者至少遵循它的一些项目结构。您可以将所有这些第三方库放在像/lib这样的目录下,并将“/lib”添加到sys.path。实际上,flask appengine模板包括常见的flask模块,默认情况下对您来说很危险

示例代码:

import os
import sys

sys.path.insert(1, os.path.join(os.path.abspath('.'), 'lib'))
import application

谷歌现在让它变得超级简单:


太棒了!这应该被选为接受回答从这个链接下载代码对我不起作用(它正在下载,但是文件的编码可能是错误的)。这就是我使用github的原因