Installing Python package gdal
into virtualenv on Linux
GDAL
provides nice toolkit for GEO related operations. However,
installing it to virtualenv on Linux is not a trivial task.
This recipe describes, how to do that.
note
here I use lowercase gdal
for Python package and upper case GDAL
for
general system wide library.
Requirements
- allow using osgeo libraries (installed via
gdal
Python package) into
virtualenv
- allow installing on Linux Ubuntu
Installation methods
There are multiple methods for installation. One requires compilation
and takes few minutes more.
The other is using wheel package of pygdal
package and is very quick.
Anyway, to create the wheel package one needs to create it once and the creation includes the compilation step anyway.
About GDAL
packages and versions
GDAL
is a general C(++) based library for GEO related calculations.
GDAL
utilities can be installed system-wide what makes shared libraries
available, but does not install Python package itself.
GDAL
comes in different versions and each Linux distribution may by default install different version.
Python package gdal
requires compilation and is not trivial to install
on Linux based systems as it expects few environmental variables to be
set. This makes installation into virtualenv more difficult.
Each gdal
version might assume different version of GDAL
and will fail
installing if expected version is not present in the system.
Python package pygdal
is an alternative to gdal
, which installs exactly the
same stuff as gdal
, but does it in a much more virtualenv friendly manner.
pygdal
comes in versions reflecting related GDAL
version. So having GDAL
version 1.10.1 in the system you shall install pygdal
version 1.10.1.
Python package gdal
(as well as pygdal
) uses root python package named
osgeo
and has a set of submodules, one being osgeo.gdal
.
If needed, other than default versions of GDAL
can be installed and
used. This is out of scope of this description.
Wheel packages can be cross-compiled, this is also out of scope.
Installing GDAL
into system
As pygdal
requires GDAL
shared libraries to be present, we must install them first.
Assuming GDAL
is not yet installed, calling gdal-config
will complain
and give you a hint how to follow up:
$ gdal-config --version
The program 'gdal-config' is currently not installed. You can install it by typing:
sudo apt-get install libgdal-dev
Follow the hint and install it:
$ sudo apt-get install libgdal-dev
Each distribution may use different version of GDAL
. To find out which
we use:
$ gdal-config --version
1.10.1
Now you know, GDAL
is installed and the version is 1.10.1 (the version
can vary).
Install pygdal
from source package (requires compilation)
Currently, pygdal
is provided only in tar.gz package, which contains
package sources and requires compilation.
Assuming, the version of GDAL
is 1.10.1
and that our virtualenv is
already activated:
$ pip install pygdal==1.10.1
It may take a while to complete, is it needs numpy, which may also
require some compilation. Just wait.
Check, it is installed:
$ pip freeze|grep pygdal
pygdal==1.10.1.0
From now on, you may use osgeo package in your Python code as you like
in exactly the same manner as if you would install it by gdal
Python
package.
Creating wheel package for pygdal
Note, that wheel packages must be created for exactly the same
architecture, namely, must match:
- CPU architecture
- OS (Linux/Windows)
In our case, it must also match the version of GDAL
installed.
Following steps can be done in virtualenv or not, as you like.
First, make sure, wheel package is installed:
$ pip install wheel
Assuming, you have GDAL
installed and it has version 1.10.1:
$ pip wheel pygdal==1.10.1.0
and wait, until it completes.
After this, you shall find subdirectory wheelhouse and it shall contain
packages with extension `whl`:
$ ls wheelhouse
numpy-1.9.1-cp27-none-linux_x86_64.whl
pygdal-1.10.1.0-cp27-none-linux_x86_64.whl
Install pygdal
from wheel packages
Installation from wheel formatted packages is much faster (a second
compared to minutes), as it does not require compilation.
Note, that directory with wheel packages can have any name, we will use
just the name wheelhouse.
Activate virtualenv first.
Ensure, you have in wheelhouse directory both required wheel packages
(for pygdal
and numpy
).
Ensure, GDAL
is installed and the version matches version of pygdal
.
Install pygdal
from wheel package:
$ pip install pygdal==1.10.1.0 -f wheelhouse
The -f wheelhouse shall point to the directory with whl files.
There is no need to install numpy
, it gets installed automatically.