geodjango syncdb 错误。来自 geodjango 教程
我按照教程完美地安装了geodjango(在Windows XP上),现在运行的是django 1.2。当我执行syncdb时,出现了以下错误。
raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured:'django.db.backends.postgis' isn
an available database backend.
Try using django.db.backends.XXX, where XXX is one of:
'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3
Error was: No module named postgis.base
我尝试把设置改成'django.db.backends.postgresql_psycopg2'作为替代方案,但结果又出现了这个错误:
AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'
当我尝试使用postgresql时:
**raise ImproperlyConfigured("Error loading psycopg module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg module: No mo
dule named psycopg**
难道不应该是我成功下载并安装的postgis吗?为什么它不工作呢?我还是个新手,正在努力学习,任何帮助都将非常感激。
2 个回答
我在Mac OS X 10.6上遇到了同样的错误,那个时候我按照geodjango网站上的说明,用Homebrew安装了一些包。显然,Geodjango的文档给出了一些不正确或过时的安装步骤。为了让Geodjango正常工作,我按照以下几个步骤操作:
现在,GeoDjango 1.4和PostGIS 2.0(这是我按照Geodjango文档的说明用Homebrew安装的版本)不兼容。所以,我需要安装PostGIS 1.5。我是通过以下终端命令来安装的(要让这个步骤成功,你必须先安装Homebrew):
brew tap homebrew/versions brew install postgis15 brew untap homebrew/versions
PostGIS 1.5和PostGreSQL 9.2(这是Homebrew安装的版本)也不兼容。所以,我安装了PostGreSQL 9.1。我不太记得具体用的Homebrew命令,但应该和上一步类似。
在我的情况下,前面的步骤还不足以让Geodjango正常工作。当我再次尝试在Django中运行'syncdb'时,发现终端出现了一个新错误:
django.core.exceptions.ImproperlyConfigured: Error loading psycopg module: No module named psycopg
我最开始以为我的psycopg2和PostgreSQL 9.1没有在我的PYTHONPATH中,所以我把它们加上了。我还检查了一下,确保Django在使用PostgreSQL 9.1而不是9.2。我使用了'initdb /usr/local/var/postgres'。
然后我需要进行一些数据库配置。我在PostGIS中设置了一个模板,并为数据库设置了一个“角色”(/user)。为此,我按照Geodjango文档中的说明进行了操作。我遇到了很多错误,但通过谷歌搜索,找到了比较容易的解决办法。
然后GeoDjango终于开始正常工作了!
这个来源是我找到的最有帮助的,里面还有一些链接,提供了更详细的信息: http://pragmaticstartup.wordpress.com/2012/09/26/installing-django-postgis-postgres-on-os-x-version-hell/
问题出在 settings.py
文件里。
'django.db.backends.postgis'
应该是这样的:
django.contrib.gis.db.backends.postgis
这样就可以解决问题了。