GeoDjango could not find GDAL library in Windows 10

Viewed 10635

I am using Django 11.4 on Windows 10 and I am having problems when I try and migrate my models. I receive this error:

django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal201", "gdal20", "gdal111", "gdal110", "gdal19")

I followed GeoDjango's installation instructions (https://docs.djangoproject.com/en/1.11/ref/contrib/gis/install/), but I am still having trouble. Everything I have found on this error says to change the system environment variables.

I installed OSGe4W and added GDAL_DATA = C:\OSGeo4W\share\gdal as well as PROJ_LIB= C:\OSGeo4W\share\proj.

I am not sure what else to try and I would appreciate any more insight.

4 Answers

I fixed this by editing the libgdal.py file in %PYTHONPATH%\Lib\site-packages\django\contrib\gis\gdal and adding str('gdal202') to line 26 so it reads:

 lib_names = [str('gdal201'), str('gdal202'), str('gdal111'), str('gdal110'), str('gdal19')]

Depending on what version of GDAL you are using, you may need to add a different version number.

I had the same problem, and for me the issue was I had started my cmd shell before updating the PATH environment variable used to search for the GDAL library. I just had to restart my shell and everything worked.

This solution works 100%. Try this if you haven't yet.

First, download the GDAL wheel from Christoph Gohlke's Unofficial Windows Binaries for Python Extension Packages.

Make sure to check your python version by opening python in terminal. You will see an output like this :

Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

In the above lines the python version is 3.8.5 and its on 32 bit. So the package that I will have to choose from the link will be 'GDAL-3.3.3-cp38-cp38-win32.whl'. You should choose yours similarly.

After you do that just run

pip install whl/GDAL-3.3.3-cp38-cp38-win32.whl

After installling GDAL. Paste the following code into your settings.py file

import os
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']

AND you are good to go.

Related