В пакете Python GDAL отсутствует заголовочный файл при установке через pip

Я пытаюсь установить gdal из pip pip install gdal внутри виртуальной среды (Ubuntu). Это не удается, потому что он не может найти 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 мог найти файлы заголовков?


person Kevin    schedule 04.07.2012    source источник


Ответы (7)


Как было предложено в другом потоке, экспорт некоторых переменных оболочки перед запуском pip работал безупречно. Путь для *_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
person tomyun    schedule 26.06.2013
comment
Это исправило это для меня, но также см. ответ @Neil Smith: в Ubuntu 14.04 вам нужно сопоставить версию libgdal, установленную в системе. - person Gabriel; 31.01.2015
comment
Все еще думаю, что это ошибка. gdal_wrap.cpp должен #include gdal/cpl_port.h вместо cpl_port.h - person Jaap Versteegh; 01.11.2016
comment
Определенно НЕ работает для меня. Все та же ошибка cpl_port.h. Использование OpenSUSE - person DanCat; 14.11.2016
comment
pip3 install GDAL==$(gdal-config --version) Явный номер версии должен соответствовать вашей существующей версии libgdal. - person Ivan Kovtun; 29.04.2019

Ответ Томюна сработал для меня при условии, что вы должны убедиться, что версия GDAL-dev, установленная через apt-get, соответствует версии, устанавливаемой 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
person Neil Smith    schedule 13.08.2014
comment
Я тоже использую Ubuntu 14.04. У меня это не сработало (у меня нет virtualenv). Только когда я изменил последнюю строку на эту: sudo pip3 install --global-option=build_ext --global-option=-I/usr/include/gdal GDAL==1.10.0 - person Arpad Horvath; 09.06.2015
comment
pip3 install GDAL==$(gdal-config --version) будет работать для всех версий. - person Ivan Kovtun; 29.04.2019

Использование 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)

Использование компоновки:

[gdal-bindings]
recipe = zc.recipe.egg:custom
egg = GDAL==1.9.1
include-dirs = /usr/include/gdal
library-dirs = /usr/lib
person leplatrem    schedule 23.09.2012
comment
Это также может быть include-dirs=/Library/Frameworks/GDAL.framework/Versions/2.1/Headers/ на OSX, если вы установили с Kyngchaos... - person Owen; 05.12.2016

Взято из этого комментария. решил мою проблему напрямую

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

Явный номер версии должен соответствовать вашей существующей версии libgdal. –

person Rhibi Hamza    schedule 28.08.2019

Я также получал эту ошибку при тестовой установке в виртуальной среде моего пакета, который зависит от GDAL. В этом случае решение состоит в том, чтобы изменить зависимость с GDAL на pygdal в параметре install_requires в setup.py. Вот так:

install_requires=['pygdal'],

person Luís de Sousa    schedule 07.04.2016

Вот что сработало для меня:

Мне пришлось получить последние версии слушателей для установки gdal 2.2.4 через pip:

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
person Scott Staniewicz    schedule 05.04.2018

попробуй сделать: варить установить gdal

после этого попробуйте еще раз.

person Yariv Katz    schedule 05.11.2014
comment
Этот ответ был бы гораздо полезнее, если бы вы объяснили OP, что не так в его случае, и каким образом ваш фрагмент решает проблему, и каковы предварительные условия для работы brew. - person jb.; 05.11.2014
comment
brew предназначен только для Mac, в то время как OP использует Ubuntu - person AlessioX; 21.07.2017