我一直在try 设置我的windows计算机,这样我就可以拥有一个带有PostGIS扩展的本地postgreSQL.安装了它之后,我希望能够在将其放入云中之前,在本地创建一个geodjango项目.我已经在本地机器上与Django合作了一段时间,使用了SQLite DB,但由于下一个项目将部分基于基于坐标的数据,我想设置正确的环境.
Import note: I've installed mini-conda to run in a seperate environment. I do activate this environment "development" when I work though
我试着在网上关注geodjango的大部分信息/教程,但都没能成功.我所做的(主要是以下内容:https://docs.djangoproject.com/en/2.0/ref/contrib/gis/install/#windows):
- 从https://www.enterprisedb.com/downloads/postgres-postgresql-downloads下载并安装最新(10.3)的PostgreSQL安装程序
- 安装后,我还使用应用程序堆栈生成器安装了PostGis
- 我已经安装了https://trac.osgeo.org/osgeo4w/台OSGeo4W
- 我已经按照geodjango网站(https://docs.djangoproject.com/en/2.0/ref/contrib/gis/install/#windows)上的描述创建了一个批处理脚本,并以管理员的身份运行了它(除了设置python路径的部分,因为自从我使用python一段时间以来,python已经在那里了)
- 我在psql shell中try 了一些命令,我想我已经创建了一个名为geodjango、用户名:***和pass:***的数据库.
- 我不知道我是否给了geodjango用户所有特权,但我怀疑是这样.
在所有这些之后,我在设置中创建了一个新的django项目.我添加了一些部分:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
'nameOfMyApp',
]
我在设置中也有这个.py:
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'geodjango',
'USER': '****',
'PASSWORD': '****',
'HOST': 'localhost',
}
}
# FOR GEODJANGO
POSTGIS_VERSION = (2, 4, 3)
当我try 在django中设置数据库时,我运行(在正确的文件夹中):
python manage.py makemigrations
我得到以下错误:
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal202", "gdal201", "gdal20", "gdal111", "gdal110", "gdal19"). Is GDAL installed? If it is, try setting GDAL_LIBRARY_PATH in your settings.
我试着解决这个问题,但似乎没有任何效果.
2018年7月3日更新:
- 我try 过自己手动安装GDAL(来自:http://www.gisinternals.com/query.html?content=filelist&file=release-1911-x64-gdal-2-2-3-mapserver-7-0-7.zip通用核心组件)
- 我已经安装了(我假设是)https://www.lfd.uci.edu/~gohlke/pythonlibs/个python绑定.但我还是犯了同样的错误.
- 我还try 将GDAL_LIBRARY_路径设置为GDAL目录或GDAL data目录(位于GDAL目录中).
Now 我得到以下错误:
OSError: [WinError 126] The specified module could not be found
(当.dll存在时…)