通过pip安装时,Python GDAL包缺少头文件

时间:2012-07-04 22:53:00

标签: python gdal

我正在尝试从虚拟环境(Ubuntu)中的pip pip install gdal安装gdal。它失败了,因为找不到cpl_port.h

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

但是,正确安装了GDAL,并且头文件位于/usr/include/gdal/cpl_port.h。是否有一些GDAL的环境变量需要设置才能让pip找到头文件?

7 个答案:

答案 0 :(得分:21)

正如the other thread中所建议的,在运行pip之前导出一些shell变量可以完美地运行。可以使用*_INCLUDE_PATH找到gdal-config --cflags的路径。

# GDAL library must have been installed
sudo apt-get install libgdal-dev

# Set up pip and/or virtualenv stuff
...

# Now install Python binding for GDAL
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
pip install GDAL

答案 1 :(得分:6)

Tomyun的回答对我有用,条件是你必须确保通过apt-get安装的GDAL-dev版本与pip安装的版本相匹配。

对于Ubuntu 14.04,命令是:

# GDAL library must have been installed
sudo apt-get install libgdal-dev

# Set up pip and/or virtualenv stuff
...

# Now install Python binding for GDAL
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
pip3 install GDAL=1.10.0

答案 2 :(得分:5)

使用PIP

pip install --no-install GDAL

然后进入ENV / build / GDAL

python setup.py build_ext --include-dirs=/usr/include/gdal
pip install --no-download GDAL

(资料来源:http://ubuntuforums.org/showthread.php?t=1769445

使用Buildout

[gdal-bindings]
recipe = zc.recipe.egg:custom
egg = GDAL==1.9.1
include-dirs = /usr/include/gdal
library-dirs = /usr/lib

答案 3 :(得分:1)

当我在虚拟环境中测试安装依赖于GDAL的我的软件包时,我也遇到了这个错误。在这种情况下,解决方案是在GDAL中的pygdal参数中将依赖性从install_requires更改为setup.py。像这样:

install_requires=['pygdal'],

答案 4 :(得分:1)

这对我有用:

我必须通过pip安装最新的听众版本才能安装gdal 2.2.4:

sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt update
sudo apt install libgdal-dev

在此之前,即使包含了正确的“包含”路径,我也会得到extensions/gdal_wrap.cpp:3172:27: fatal error: cpl_vsi_error.h: No such file or directory

pip安装(在virtualenv中):

 pip install --global-option=build_ext --global-option="-I/usr/include/gdal" gdal

答案 5 :(得分:1)

comment开始,它直接解决了我的问题

pip3 install GDAL==$(gdal-config --version) 

显式版本号应与您现有的libgdal版本匹配。 –

答案 6 :(得分:-3)

尝试做:     brew install gdal

之后再试一次。