Postgis不是可用的数据库后端。

12

在一个正在运行的Django 1.9应用程序中设置Geodjango时,我遇到了这个错误。

我的应用程序存在于Amazon EC2实例和RDS Postgres实例中。

错误信息如下:

django.core.exceptions.ImproperlyConfigured: 'django.contrib.gis.db.backends.postgis' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
    'mysql', 'oracle', 'postgresql', 'sqlite3

我做了什么:
  • 安装GEOS、PROJ.4和PostGIS,步骤参考geodjango文档
  • 按照亚马逊文档在amazon RDS上安装PostGIS。
  • 修改我的项目 settings.py 文件以包含:

    • INSTALLED_APPS = (... 'django.contrib.admin', ... 'django.contrib.gis')
    • GEOS_LIBRARY_PATH = '/usr/local/lib/libgeos_c.so'
    • DATABASES = { ... 'ENGINE': 'django.contrib.gis.db.backends.postgis' ...}
  • 修改我的应用程序 models.py 文件以从 django.contrib.gis.db 导入模型,而不是 django.db

你有什么猜测吗?


你安装了 psycopg2 吗? - themanatuf
是的,我已经安装了python-psycopg2、postgresql-server-dev-9.3、postgresql-9.3-postgis-2.1和postgresql-9.3。 - klautern
你能否请发一下你的整个 settings.py 文件?我猜里面可能有个打字错误,因为如果你按照文档操作,它应该可以正常工作。 - themanatuf
4个回答

9

我遇到了同样的问题 我安装了OSGeo 然后导航到缺失的库

> # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR =
> os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
> TEMPLATE_DIR=os.path.join(BASE_DIR,'templates')

这些是我所缺失的库:

 GDAL_LIBRARY_PATH = r'C:\OSGeo4W64\bin\gdal204.dll'
 GEOS_LIBRARY_PATH=r'C:\OSGeo4W64\bin\geos_c.dll'

5

运行以下命令:

sudo apt-get install binutils libproj-dev gdal-bin

这在文档中有详细说明。


更新链接:https://docs.djangoproject.com/en/4.0/ref/contrib/gis/install/geolibs/ - Alexandre Serra

1
我遇到了同样的问题。我运行了pip install gdal,但是系统提示缺少一个libffi库的错误信息。安装正确的库(AUR上的libffi6)后,我再次运行pip install gdal,问题得到解决。

谢谢!这解决了问题,因为Pacman更新了libffi到版本8,但gdal需要来自AUR的版本7。 - peterhil

0
我发现我的libgdal库给我带来了问题,并且出现了这个错误。
我在Windows下使用conda环境运行Django 1.11和GDAL 2.0。更改GDAL和Django版本似乎没有解决任何问题。然而,将libgdal版本设置为1.11.2似乎为我清除了错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接