【发布时间】: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