我正在尝试按照this document将Django
应用部署到Google App Engine
(GAE)。我创建并配置了Google Cloud SQL
实例,如该文档中所述。我使用PyCharm
作为开发环境,并使用Django支持创建了一个GAE项目。
我将本地服务器配置为指向GAE服务器。当我尝试在PyCharm中启动GAE本地服务器时,它会在SETTINGS.PY
中对未正确配置的数据库引发异常:
google.appengine.ext.django.backends.rdbms' isn't an available database backend
我可以从堆栈跟踪中看到本地服务器在/Library/Python/2.7/site-packages
中使用Django版本,而我认为它应该使用/usr/local/google_appengine/lib
中的那个。
如果我还有其他Django项目应该使用/Library/Python/2.7/site-packages
中的Django版本,那么解决这个问题的最佳方法是什么?如果我修改我的PYTHONPATH
以包含GAang版本的Django,那么我的所有项目都不会引用那个版本的Django吗?
编辑:更准确地说,GAE本地服务器启动正常,但在执行syncdb
任务更新数据库时会抛出上述堆栈跟踪。
编辑2:在Python解释器下的PyCharm设置中,我发现修改路径的可能性并添加了与GAE SDK一起分发的Django 1.4版本。当我启动GAE开发服务器时,我实际上可以看到它使用GAE SDK中的Django版本,但它仍然在数据库定义上崩溃:
Error was: No module named google.appengine.ext.django.backends.rdbms.base
编辑3:尝试使用本教程部署现有的Django应用时遇到了问题。请参阅this separate question。
答案 0 :(得分:11)
看起来syncdb
的PyCharms调用正在使用错误的Django安装。
google.appengine.ext.django.backends.rdbms
不是官方Django发行版的一部分,但它是GAE django的一部分。
我的GAE django在/usr/local/google_appengine/lib/
如果您使用的是linux / OS X,则可以将其添加到.bashrc
/ .bash_profile
并使syncdb使用此功能:
export GAE="/usr/local/google_appengine"
export PYTHONPATH="$PYTHONPATH:$GAE:$GAE/lib/django_1_4"
export PATH=${PATH}:$GAE/lib/django_1_4/django/bin/
export PATH=${PATH}:/usr/local/mysql/bin
我写了tutorial about using Django with GAE and Google Cloud SQL。那里可能还有一些相关的信息。