python - 为什么它在运行迁移时抛出`GeoDjango Postgis requirements not满足得到错误?
问题描述
我正在使用带有 django 的 Postgresql 数据库,并且已经安装在 PostGis 中
CREATE EXTENSION postgis;
,gdal
和proj.4
已经geos
安装在contrib.gis django package
. 正如文档所说,它们应该在安装 PostGis 之前安装。这是否意味着它们应该安装在 Postgresql 数据库或其他东西上。
1)我还需要将它们安装在 postgresql 数据库上吗?
到目前为止,我已经包含在settings.py
INSTALLED_APPS = [
.
.
'django.contrib.gis',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': '......',
'USER' : '.........',
'PASSWORD': '........',
'HOSTNAME': 'localhost',
'PORT': '5432',
},
}
但是当我将它包含在models.py
.
from django.contrib.gis.db import models as geomodels
2)我尝试运行迁移,但出现此错误:
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal202", "gdal201", "gdal20", "gdal111", "gdal110", "gdal19"). Is GDAL in
停滞不前?如果是,请尝试在您的设置中设置 GDAL_LIBRARY_PATH。
我不确定我应该修复什么来运行迁移,如果这个错误与数据库或 django 相关
3)我需要在 django 和 postgresql 上安装Gdal
, Geos
and吗?proj
解决方案
您需要按照以下步骤在项目中按照文档设置 post GIS:
在将PostGIS扩展安装到项目之前,在安装了 postgres 的机器上安装GEOS、PROJ.4和GDAL 。安装文档已包含在链接中。您可以从此处查看 PostGIS 安装要求。
创建空间数据库。安装上述要求后,创建 PostGIS 扩展。您可以通过在您的 postgres shell 中执行以下代码来做到这一点
> CREATE EXTENSION postgis;
或者您可以将以下迁移添加到您的项目中
from django.contrib.postgres.operations import CreateExtension from django.db import migrations class Migration(migrations.Migration): operations = [ CreateExtension('postgis'), ... ]
之后,您可以将以下内容添加到您的
settings.py
DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'NAME': 'geodjango', 'USER': 'geo', }, } INSTALLED_APPS = [ .. .. 'django.contrib.admin', 'django.contrib.gis', .. .. ]
完成这些步骤后,您可以使用 django PostGIS。有关安装 PostGIS 的更多信息,请访问https://docs.djangoproject.com/en/2.1/ref/contrib/gis/tutorial/#setting-up
推荐阅读
- grafana - Grafana 向图中添加新过滤器
- python - 舍入和更新列表中的元素
- bash - 如何按属性而不是 cn 对 ldap 搜索结果进行分组。使用 bash
- go - 如何在 Windows 上正确安装 gomobile?
- javascript - 如何重置引导向导
- javascript - 如何使用后端和页码更新表中的内容
- html - 有没有办法让输入框具有响应宽度,即使它是 flex 的孩子?
- phpunit - PhpUnit 不使用字符串数字和抽象类识别 TypeError
- python - unhexlify 总是需要对
- jdbc - TDengine taos-JDBC 找不到合适的驱动