【问题标题】:Problems deploying Flask app on Google App Engine在 Google App Engine 上部署 Flask 应用程序的问题
【发布时间】:2014-01-20 15:04:24
【问题描述】:

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

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

from itsdangerous import json as _json

ImportError: No module named itsdangerous

在同一目录中下载并解压缩 https://pypi.python.org/pypi/itsdangerous 并不能解决此问题。如果我只是抓取 itsdangerous.py 并将其放在烧瓶目录中,我会得到:

_slash_escape = '\\/' not in _json.dumps('/')

AttributeError: 'module' 对象没有属性 'dumps'

我读到这可能是由于 json.py 文件冲突,但我也尝试过使用绝对路径来导入 json,但似乎没有什么不同。

【问题讨论】:

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


    【解决方案1】:

    您将itsdangerous.py 放在错误的目录中。因为 json.py 和 itsdangerous.py 都存在于 /flask 目录中,itsdangerous.py 将导入 /flask/json.py 而不是正确的。

    GAE 官方doc 提到了一种包含 3rd-party 库的方法:

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

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

    我建议你使用 gae-flask 项目模板(例如flask-appengine-template)或至少遵循它的一些项目结构。您可以将所有这些第 3 方库放在 /lib 之类的目录下,并将“/lib”添加到 sys.path。实际上,flask-appengine-template 默认包含常见的烧瓶模块,例如 itsdangerous。

    示例代码:

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

    【讨论】:

      【解决方案2】:

      Google 现在让它变得超级简单:

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

      【讨论】:

      猜你喜欢
      • 2019-04-22
      • 2019-05-30
      • 2020-03-04
      • 2022-01-01
      • 2021-07-10
      • 2020-10-05
      • 2020-11-24
      • 2019-05-18
      • 1970-01-01
      相关资源
      最近更新 更多