Yor*_*ian 10 python django postgresql postgis geodjango
我一直在尝试设置我的Windows计算机,以便我可以使用PostGIS扩展的本地postgreSQL.有了这个安装,我希望能够在将它放入云之前在本地创建一个geodjango项目.我一直在使用SQLite DB在我的本地机器上使用Django一段时间,但由于下一个项目将部分基于基于坐标的数据,我想设置正确的环境.
导入说明:我已经安装了mini-conda以在单独的环境中运行.我工作的时候会激活这个环境"开发"
我试图在线跟踪大多数geodjango信息/教程,但无法使其工作.我做了什么(主要是遵循这个:https://docs.djangoproject.com/en/2.0/ref/contrib/gis/install/#windows):
毕竟我创建了一个新的django项目,在settings.py中我添加了一些部分:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
'nameOfMyApp',
]
Run Code Online (Sandbox Code Playgroud)
我在settings.py中也有这个:
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'geodjango',
'USER': '****',
'PASSWORD': '****',
'HOST': 'localhost',
}
}
# FOR GEODJANGO
POSTGIS_VERSION = (2, 4, 3)
Run Code Online (Sandbox Code Playgroud)
当我尝试在django中设置数据库时,我运行(在右侧文件夹中):
python manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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.
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题,但似乎没有任何效果.任何人都可以帮我在本地设置这一切吗?
更新7-3-2018:
现在我收到以下错误:
OSError: [WinError 126] The specified module could not be found
Run Code Online (Sandbox Code Playgroud)
(而.dll就在那里......)
Udi*_*Udi 34
我发现以下内容适用于Windows:
python以检查您的python是32位还是64位.C:\OSGeo4W或C:\OSGeo4W64:
确保以下内容包括在您的settings.py:
import os
if os.name == 'nt':
import platform
OSGEO4W = r"C:\OSGeo4W"
if '64' in platform.architecture()[0]:
OSGEO4W += "64"
assert os.path.isdir(OSGEO4W), "Directory does not exist: " + OSGEO4W
os.environ['OSGEO4W_ROOT'] = OSGEO4W
os.environ['GDAL_DATA'] = OSGEO4W + r"\share\gdal"
os.environ['PROJ_LIB'] = OSGEO4W + r"\share\proj"
os.environ['PATH'] = OSGEO4W + r"\bin;" + os.environ['PATH']
Run Code Online (Sandbox Code Playgroud)运行python manage.py check以验证geodjango是否正常工作.
kin*_*urr 22
在我的 Windows 10 Pro 机器上更新了一些 OSGEO4W 后,我又开始遇到 GDAL 绑定问题。我以前使用了此处发布的解决方案和本教程的组合。
这对我使用 Windows 10 Pro 64 位、Django 3.0.6 和 GDAL 3.0.4 使用 python 3.7 虚拟环境有效。我已经在没有 OSGEO4W 的情况下对其进行了测试,它似乎可以工作。
首先,从Christoph Gohlke 的 Unofficial Windows Binaries for Python Extension Packages下载 GDAL 轮。
pip install "/path/to/GDAL?3.0.4?cp37?cp37m?win_amd64.whl"
Run Code Online (Sandbox Code Playgroud)
修改libgdal.py通过添加'gdal300'到Django的GDAL包Python文件的第23行(/路径/到/ virtual_env / LIB /站点包/ django的/了contrib / GIS / GDAL / libgdal在虚拟envrironment站点包文件.py):
elif os.name == 'nt':
# Windows NT shared libraries
lib_names = ['gdal300', 'gdal204', 'gdal203', 'gdal202', 'gdal201', 'gdal20']
Run Code Online (Sandbox Code Playgroud)
最后,在Django 项目的settings.py文件中添加
if os.name == 'nt':
VENV_BASE = os.environ['VIRTUAL_ENV']
os.environ['PATH'] = os.path.join(VENV_BASE, 'Lib\\site-packages\\osgeo') + ';' + os.environ['PATH']
os.environ['PROJ_LIB'] = os.path.join(VENV_BASE, 'Lib\\site-packages\\osgeo\\data\\proj') + ';' + os.environ['PATH']
Run Code Online (Sandbox Code Playgroud)
就我而言(Windows10Pro + Python3.7.1),仅存在(自动选择的)dll是不够的gdal111.dll。
我意识到,我也已经gdal204.dll位于C:\OSGeo4W\bin并试图“充实”评选的列表变量lib_names与'gdal204'在第24行(对于Windows NT的共享库)的%PYTHON_ROOT%\Lib\site-packages\django\contrib\gis\gdal\libgdal.py,即
#[...]
elif os.name == 'nt':
# Windows NT shared libraries
lib_names = ['gdal204', 'gdal202', 'gdal201', 'gdal20', 'gdal111', 'gdal110', 'gdal19']
#[...] ^^^^^^^
Run Code Online (Sandbox Code Playgroud)
目前没有负面影响。
| 归档时间: |
|
| 查看次数: |
6965 次 |
| 最近记录: |