【问题标题】:Google App Engine (GAE) Improperly Configured DatabaseGoogle App Engine (GAE) 数据库配置不当
【发布时间】:2018-02-06 04:28:42
【问题描述】:

我有一个可以使用 Heroku 部署的 Django 项目。我无法将应用程序部署到 GAE 上。当我在本地运行它时,我收到一个错误,指的是配置不当的数据库后端。

任何帮助将不胜感激。

错误:

...
raise ImproperlyConfigured(error_msg)
ImproperlyConfigured: 'postgresql' isn't an available database backend. 
Try using django.db.backends.XXX, where XXX is one of:
    'dummy', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3' <br>

 Error was: No module named postgresql.base
...

app.yaml

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: main.app

libraries:
- name: django
  version: "latest"

beta_settings:
    cloud_sql_instances: <cloudsql-connection-string>

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'xxx',
        'USER': '*****',
        'PASSWORD': '******',
        'HOST': 'xx.xx.xx.xx',
        'PORT': '5432',
    }
}

如果我将引擎更改为

'ENGINE': 'django.db.backends.postgresql_psycopg2'

我得到错误:

ImportError: 没有名为 psycopg2.extensions 的模块

pip freeze 返回:

Django==1.11.4 psycopg2==2.7.3.1 pytz==2017.2

【问题讨论】:

  • 您的导入错误表明您没有将该库安装到您的应用程序中(它可能已安装到您的本地系统中,但这没有帮助)。
  • 感谢您的评论,但我仍然不明白需要做什么。也许你可以把它扩大一点。据我了解,pip install psycopg2 应该在 Windows 系统上安装所有依赖项(就是这样)。我还创建了一个相同的应用程序,配置为在 GAE 之外工作,它工作正常。另外,pip freeze 的输出不是表明它是为此应用程序安装的吗?
  • GAE 应用程序不是普通的 python 应用程序,您的期望不正确。 GAE(标准环境)应用程序可以请求 GAE 沙箱提供的库或应用程序本身包含的库。本地系统上安装的任何内容都无关紧要。见Using third-party libraries
  • Donno 如果与您的情况相关(我不是 django 用户,不知道您是否真的想连接到 PostgreSQL 实例)但如果您这样做,您可能想查看这篇文章好吧:stackoverflow.com/questions/45190591/…
  • 丹,这些真的很有帮助!感谢您迄今为止的协助。原来我是在标准环境中部署一个应用程序,但我想在 flex 环境中做一个。似乎环境中的决定是在 app.yaml 文件中做出的。所以,(如果我理解正确的话)当我使用上面的 app.yaml 时,我告诉 GAE 使用标准 env(它不允许 psycopg2)。我的下一步是创建一个 requirements.txt 文件并为 flex 环境重写 app.yaml。此外,PyCharm 似乎基于他们的 app.yaml 假设了一个 STD 环境来设置 GAE 项目。

标签: django google-app-engine pycharm


【解决方案1】:

GAE 标准环境。不允许 psycopg2,似乎我原来的 app.yaml(上图)指示 GAE 分配一个标准环境。实例。 Dan 的 cmets(上图)强调了这种脱节。这里的正确程序是 1)更改应用程序以能够在 GAE 标准上部署,或 2)更改 app.yaml 以部署在 GAE flex 上(根据我目前的理解)。

以下页面似乎对第二个选项 (https://cloud.google.com/appengine/docs/flexible/python/upgrading) 和 (https://cloud.google.com/appengine/docs/flexible/python/testing-and-deploying-your-app) 有所帮助。

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 2010-10-16
    • 2015-12-08
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多