Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I asked this question on Stack Overflow before I realised this site existed. As this site it more appropriate, I'll ask it here too.

I'm trying to install gdal from pip pip install gdal inside a virtual environment (Ubuntu). It fails because it cannot find cpl_port.h

extensions/gdal_wrap.cpp:2853:22: fatal error: cpl_port.h: No such file or directory
compilation terminated

However GDAL is installed correctly and the header file is located at /usr/include/gdal/cpl_port.h. Is there some environment variable for GDAL that needs to be set in order for pip to find the header files?

share|improve this question
add comment

5 Answers

The problem with the pip installing gdal is that it only gets the bindings, not the entire library, so it can get tricky. One way to solve it is to use the pip command to download - but not install. Then you tweak the header location from the config file. Then you pip install that. meh.

I was having the same problem but realized that writing a fabric script to recompile gdal and generate the python bindings was going to take less time. You even get the benefit of filegdb with that. Go ahead and use tha gist I wrote or tweak it to your hearts content.

share|improve this answer
add comment

Τhe header files cannot be found on your local filesystem so you need to specify the include dirs when installing gdal via pip.

first download gdal:

pip install --no-install GDAL

then specify where the headers are:

python setup.py build_ext --include-dirs=/usr/include/gdal/

then install it:

pip install --no-download GDAL

Here's another way to install gdal python:

$ sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
$ sudo apt-get update
$ sudo apt-get install python-gdal

after that open IDLE:

from osgeo import gdal

and you're good to go!

share|improve this answer
1  
Hi thanks for you answer but I really need a way to install via pip as I will be creating isolated environments using virtualenv during CI process. –  kevin Jul 8 '12 at 22:26
    
what is the output when you run 'gdal-config --version' and 'gdal-config --libs' ? –  nickves Jul 9 '12 at 9:40
    
GDAL v1.9.1. gdal-config --libs -> -L/usr/lib -lgdal –  kevin Jul 9 '12 at 17:35
2  
@nickves I am trying to install GDAL using virtualenvwrapper in Ubuntu, and when I try your first line: pip install --no-install GDAL, I get the error: __main__.gdal_config_error: [Errno 2] No such file or directory Any idea? –  theJollySin Mar 23 '13 at 18:36
    
Yes, It seems that gdal bindings are trying to find gdal-confing within your virtualenv, and it fails because it's not there. A possible solution (I haven't test it!) is to create a symbolic link of your gdal-config to your virtualenv directory ( ls -s /path/to/gdal/gdal-config /path-to-virtualenvs/your-env/bin/gdal-config ). –  nickves Mar 25 '13 at 18:50
show 1 more comment

While a while later, this provides the include path without having to bail out of pip installation: One can set the include path using an environment variable.

Assuming the headers are in /usr/include/gdal, issue an

export CPLUS_INCLUDE_PATH=/usr/include/gdal

before running pip.

share|improve this answer
    
Using this, I get "extensions/gdalconst_wrap.c:2732:18: fatal error: gdal.h: No such file or directory" even though gdal.h is present in /usr/include/gdal –  anand_trex May 26 '13 at 1:14
1  
Does using C_INCLUDE_PATH instead/additionally helps=? –  Crischan Jun 13 '13 at 11:34
add comment

Yes, doing the following before running PIP appears to work:

export CPLUS_INCLUDE_PATH=/usr/include/gdal

export C_INCLUDE_PATH=/usr/include/gdal

share|improve this answer
add comment

selimnairb's answer is close but you wont have the headers unless you've installed libgdal-dev:

sudo apt-get install libgdal-dev

with that done,

export CPLUS_INCLUDE_PATH=/usr/include/gdal

export C_INCLUDE_PATH=/usr/include/gdal

and then

pip install GDAL

The compilation ran to completion and I have GDAL in my virtual env. Phew!

share|improve this answer
    
Seems to be the only solution that worked. –  bozdoz Mar 25 at 16:46
    
Tried this on another system, and I think the combination of this plus @nickves answer is what actually does it. –  bozdoz Mar 31 at 23:33
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.