为啥它在运行迁移时抛出`GeoDjango Postgis 要求不满足得到错误?
Posted
技术标签:
【中文标题】为啥它在运行迁移时抛出`GeoDjango Postgis 要求不满足得到错误?【英文标题】:Why it throws `GeoDjango Postgis requirements not satisfied getting error while running migrations?为什么它在运行迁移时抛出`GeoDjango Postgis 要求不满足得到错误? 【发布时间】:2019-07-31 17:31:42 【问题描述】:我正在使用带有 django 的 Postgresql 数据库,并且已经使用它安装在 PostGis 中
CREATE EXTENSION postgis;
gdal
、proj.4
和 geos
已安装在 contrib.gis django package
中。正如documentation 所说,它们应该在安装 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
和 proj
吗?
【问题讨论】:
【参考方案1】:您需要按照以下步骤在项目中按照文档设置 post GIS:
在将 PostGIS 扩展安装到项目之前,在安装了 postgres 的计算机上安装 GEOS、PROJ.4 和 GDAL。安装文档已包含在链接中。您可以从here 查看 PostGIS 安装要求。
For installing GEOS For installing PROJ.4 For installing GDAL创建空间数据库。安装上述要求后创建 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'),
...
]
Visit here for more information
之后,您可以将以下内容添加到您的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
【讨论】:
但是当我为我的所有应用程序使用 postgresql 作为数据库并且使用 postgis 作为我的默认数据库后,不会导致任何类型的错误。 这是正常的 postgis 只是包装了 postgres 的所有功能 好的,但是如果我在使用 postgis 作为数据库引擎后尝试运行服务器,它仍然会给我 django.core.exceptions.ImproperlyConfigured: 找不到 GDAL 库的错误(试过“gdal202 ”、“gdal201”、“gdal20”、“gdal111”、“gdal110”、“gdal19”)。 GDAL是否停滞不前?如果是,请尝试在您的设置中设置 GDAL_LIBRARY_PATH。 你的机器上安装GDAL
了吗?请查看this link 了解更多信息。
我已经下载了包含 gdal 的 OSGeo4W 包,并且我还根据文档设置了系统变量,但它仍然给出错误。根据文档,如果文件位于非标准位置,那么我们可以指定 libgdal.so 文件的路径,但我在包中的任何地方都没有该文件。以上是关于为啥它在运行迁移时抛出`GeoDjango Postgis 要求不满足得到错误?的主要内容,如果未能解决你的问题,请参考以下文章
当有任何 SOAP 请求的挂起的实体框架数据库迁移时抛出 SOAP 异常
为啥进程列表时抛出 java.lang.UnsupportedOperationException [重复]
GeoDjango:PostgreSQL没有运行迁移,对象没有属性'geo_db_type
为啥 FtpWebRequest 恰好在长传输结束时抛出 WebException?