Installing GDAL on Windows - I have an easy solution

58 views
Skip to first unread message

Adam Cox

unread,
Mar 11, 2020, 4:40:43 PM3/11/20
to Arches Project
Hi all, in setting up a development environment for Arches 5, I just encountered a new method for installing GDAL on windows that is easier than what I'm used to. In the past, I have used the OSGeo4W installer, or have downloaded and installed GDAL separately. The new way I just found actually installs GDAL directly into the virtual environment so you can set environment variables to point to it there on startup.

1. Download the Windows binary for your appropriate system architecture (64- or 32-bit) from the Christoph Gohlke site: https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal

I used version 2.4.1, which seems to be ok so far, even though Django 2.2 docs say GDAL 2.3 is the highest supported version: https://docs.djangoproject.com/en/2.2/ref/contrib/gis/install/geolibs/. From the Gohlke site you can get an older version too.

2. Install the .whl file into your virtual environment

For me: pip install \path\to\downloaded\GDAL-2.4.1-cp37-cp37m-win_amd64.whl

3. In settings_local.py, add these lines. Note that your environment variables are being modified temporarily when the app is run, so you don't need to change any of the real environment variables on your system. The environment variables are now pointing directly inside your virtual environment, not to any global installation of GDAL, OSGeo4W, etc.

import os

os.environ['GDAL_DATA'] = r"C:\archesproject\ENV\Lib\site-packages\osgeo\data\gdal"
os.environ['PROJ_LIB'] = r"C:\archesproject\ENV\Lib\site-packages\osgeo\data\proj"
os.environ['PATH'] = r"C:\archesproject\ENV\Lib\site-packages\osgeo" + os.environ['PATH']
GDAL_LIBRARY_PATH = r'C:\archesproject\ENV\Lib\site-packages\osgeo\gdal204.dll'

For reference, here is the stack exchange question where I got this solution: https://gis.stackexchange.com/questions/330418/geodjango-cant-find-gdal

If anyone tries this method, please post here to let me and others know how it goes. Would be nice to have a tried and true better way of dealing with GDAL, especially on systems that may need different versions of it for different application.

Adam

p.s. A more dynamic, less hard-coded refactor of the settings_local lines looks like this:

import os

envpath = os.environ['VIRTUAL_ENV']
os.environ['GDAL_DATA'] = os.path.join(envpath, r"Lib\site-packages\osgeo\data\gdal")
os.environ['PROJ_LIB'] = os.path.join(envpath, r"Lib\site-packages\osgeo\data\proj")
os.environ['PATH'] = os.path.join(envpath, r"Lib\site-packages\osgeo") + os.environ['PATH']
GDAL_LIBRARY_PATH = os.path.join(envpath, r"Lib\site-packages\osgeo\gdal204.dll")

Lindsey Gant

unread,
Mar 11, 2020, 5:20:51 PM3/11/20
to Arches Project
Thanks, Adam!! As someone who has struggled with GDAL, this suggestion is very welcome and I would love to hear how it works out for people.

Adam Cox

unread,
Mar 11, 2020, 5:51:31 PM3/11/20
to Lindsey Gant, Arches Project
No problem Lindsey. I just did some more testing and it seems like you can pare down those settings lines. I was suspicious because I realized that PATH line is actually incorrect, and it needs a ";" in it, like this:

os.environ['PATH'] = os.path.join(envpath, r"Lib\site-packages\osgeo") + ';' + os.environ['PATH']

Also, everything checks out even after I remove the GDAL_DATA and PROJ_LIB lines.

Adam

--
-- To post, send email to arches...@googlegroups.com. To unsubscribe, send email to archesprojec...@googlegroups.com. For more information, visit https://groups.google.com/d/forum/archesproject?hl=en
---
You received this message because you are subscribed to the Google Groups "Arches Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to archesprojec...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/archesproject/63666f24-8e7e-4ad2-a17c-bcc6c73953c5%40googlegroups.com.

Andrew Jones

unread,
Mar 12, 2020, 5:21:42 AM3/12/20
to Arches Project
That might have saved us a load of hassle. The OSGeo installed is a real pain behind our firewall.

Thanks Adam
-- To post, send email to arches...@googlegroups.com. To unsubscribe, send email to arches...@googlegroups.com. For more information, visit https://groups.google.com/d/forum/archesproject?hl=en

---
You received this message because you are subscribed to the Google Groups "Arches Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to arches...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages