我一直在尝试设置我的Windows计算机,以便我可以拥有一个带PostGIS扩展名的本地postgreSQL。有了这个安装,我希望能够在将它放入云之前在本地创建一个geodjango项目。我一直在使用SQLite DB在我的本地机器上使用Django一段时间,但由于下一个项目将部分基于基于坐标的数据,我想设置正确的环境。
导入说明:我已安装mini-conda以在单独的环境中运行。我确实激活了这个环境" development"当我工作时
我曾尝试在线跟踪大部分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',
]
我也在settings.py中找到了这个:
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'geodjango',
'USER': '****',
'PASSWORD': '****',
'HOST': 'localhost',
}
}
# FOR GEODJANGO
POSTGIS_VERSION = (2, 4, 3)
当我尝试在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.
我试图解决这个问题,但似乎没有任何效果。 任何人都可以帮我在本地设置这一切吗?
更新7-3-2018:
现在我收到以下错误:
OSError: [WinError 126] The specified module could not be found
(而.dll就在那里......)
答案 0 :(得分:22)
我发现以下内容适用于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']
运行python manage.py check
以验证geodjango是否正常运行。
答案 1 :(得分:9)
在Windows 10 Pro计算机上更新了一些OSGEO4W之后,我又开始遇到GDAL绑定问题。我以前曾结合使用此处和this tutorial中发布的解决方案。
这是使用Windows 10 Pro 64位,Django 3.0.6和GDAL 3.0.4(使用python 3.7虚拟环境)对我有效的方法。我已经在没有OSGEO4W的情况下对其进行了测试,它似乎可以正常工作。
首先,从Christoph Gohlke's Unofficial Windows Binaries for Python Extension Packages下载GDAL滚轮。
pip install "/path/to/GDAL‑3.0.4‑cp37‑cp37m‑win_amd64.whl"
通过在Django GDAL软件包python文件(/ path / to / virtual_env / Lib / site-packages)的第23行中添加“ gdal300”,来修改虚拟环境站点软件包中的 libgdal.py 文件。 /django/contrib/gis/gdal/libgdal.py):
elif os.name == 'nt':
# Windows NT shared libraries
lib_names = ['gdal300', 'gdal204', 'gdal203', 'gdal202', 'gdal201', 'gdal20']
最后,在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']
答案 2 :(得分:2)
在我的情况下(Windows10Pro + Python3.7.1),仅存在(自动选择的)dll是不够的,即gdal111.dll
。
我意识到我也有gdal204.dll
位于C:\OSGeo4W\bin
,并试图在第24行中用lib_names
“丰富”名为'gdal204'
的列表变量(关于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']
#[...] ^^^^^^^
暂时没有负面影响。
答案 3 :(得分:0)
对于Microsoft Windows 10和Python3.6.8,我从Unofficial Windows Binaries for Python Extension Packages安装了GDAL 2.3.3,修改了libgdal.py,在lib_names列表gdal203
中添加了env\Lib\site-packages\django\contrib\gis\gdal\libgdal.py
。
最后,将osgeo和proj添加到PATH,并按如下所示设置GDAL_LIBRARY_PATH(settings.py开头):
os.environ['PATH'] = os.path.join(BASE_DIR, r'env\Lib\site-packages\osgeo') + ';' + os.environ['PATH']
os.environ['PROJ_LIB'] = os.path.join(BASE_DIR, r'env3\Lib\site-packages\osgeo\data\proj') + ';' + os.environ['PATH']
GDAL_LIBRARY_PATH = os.path.join(BASE_DIR, r'env\Lib\site-packages\osgeo\gdal203.dll')
在这种情况下,env是我的Python环境。
答案 4 :(得分:0)
要遵循的步骤:
C:\OSGeo4W
或C:\OSGeo4W64
中安装相应的OSGeo4W(32或64位):settings.py
中包含以下内容:import os
GDAL_LIBRARY_PATH = r'C:\OSGeo4W\bin\gdal300'
set OSGEO4W_ROOT=C:\OSGeo4W
set PYTHON_ROOT=C:\Python3X
set GDAL_DATA=%OSGEO4W_ROOT%\share\gdal
set PROJ_LIB=%OSGEO4W_ROOT%\share\proj
答案 5 :(得分:0)
即使gdal204.dll
位于预期的位置,并且使用正确的体系结构,我也遇到相同的错误“找不到指定的模块”(我通过在Python代码中添加断言并加载C程序中的DLL)。
原来是Python 3.7 app from the Microsoft Store的问题,the app description是在您第一次在命令行上键入python
时自动安装的问题。
这个版本的Python拒绝载入GDAL DLL;我不知道这是错误还是安全功能。
我通过以下方式解决了该问题:
答案 6 :(得分:0)
pip install name_of_the_file
安装车轮。
您将看到 osgeo 文件夹已在'... \ Envs \ my_django \ Lib \ site-packages \'位置创建。
转到 osgeo 文件夹并复制 gdalxxx.dll 文件的完整路径,然后将其添加到setting.py文件中作为gdal库路径。例如
GDAL_LIBRARY_PATH = r'C:\Users\WIN8\Envs\my_django\Lib\site-packages\osgeo\gdal300.dll'
答案 7 :(得分:0)
只需跟进Udi精美而详尽的答案即可(由于我的代表未满50岁,因此无法直接发表评论,它被标记为最有用的答案);
许多小时后,我尝试了他提供的解决方案,该解决方案也对我不起作用。 我收到以下错误:
OSError: [WinError 193] %1 is not a valid Win32 application
但是我呆在那里,发现尽管我运行的是64位python和操作系统(肯定),但它一直在寻找32位(OSGeo4W
)文件夹。最终让我通过的是将OSGeo4W64
文件夹的内容复制到OSGeo4W
。希望可以节省您的时间。
另外一个注意事项:
请确保您在环境文件夹中编辑libgdal.py
文件。它可能存在于多个位置-您的python文件夹和环境文件夹-如果您在python目录中编辑libgdal
,它将无法正常工作。
答案 8 :(得分:0)
创建地图兼容数据库
我最近买了一台新笔记本电脑,不得不在我的新机器上安装 Python 和相关软件。我试图使用 OSGeo4W 创建一个 geodjango 兼容数据库,但忘记了 PostgreSQL 和 pgAdmin4 的作用。
当您从 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 安装最新的 PostgreSQL 设置时,您会同时获得 pgAdmin4。
注意 - 电子商务是我的个人服务器组。
当您创建 PostgreSQL 13 服务器时,您的服务器组将与我的不同。
当我第一次在新机器上打开 pgAdmin4 时,我保留了默认用户名“postgres”。如果您第一次登录 pgAdmin4 时选择了自己的用户名,则必须相应地更改以下值。
连接到数据库
在我的代码中
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']
GDAL_LIBRARY_PATH = r'C:\OSGeo4W64\bin\gdal300.dll'
我收到一条关于 GDAL_LIBRARY_PATH 的错误消息,因此检查了 Windows 资源管理器。在发现我没有 gdal300.dll 文件时,我将代码更改为
GDAL_LIBRARY_PATH = r'C:\OSGeo4W64\bin\gdal301.dll'
答案 9 :(得分:0)
就我而言,安装 cp39 文件没有给我任何错误,而 cp310 给了我错误 (ERROR: GDAL-3.3.1-cp310-cp310-win_amd64.whl is not a supported wheel on this platform.
):
pip install GDAL-3.3.1-cp310-cp310-win_amd64.whl ❌
对比
pip install GDAL-3.3.1-cp39-cp39-win_amd64.whl ✔
<块引用>
我想您必须不断尝试每个文件,直到获得兼容的结果。