Falta el archivo de cabecera del paquete GDAL de Python cuando se instala a través de pip

59

Le pregunté a esta pregunta sobre Desbordamiento de pila antes me di cuenta de que este sitio existía. Como este sitio es más apropiado, lo pediré aquí también.

Estoy intentando instalar gdal desde pip pip install gdal dentro de un entorno virtual (Ubuntu). Falla porque no puede encontrar cpl_port.h

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

Sin embargo, GDAL está instalado correctamente y el archivo de encabezado está ubicado en /usr/include/gdal/cpl_port.h . ¿Hay alguna variable de entorno para GDAL que deba configurarse para que pip encuentre los archivos de encabezado?

    
pregunta kevin 05.07.2012 - 19:38

21 respuesta

77

La respuesta de selimnairb está cerca, pero no tendrás los encabezados a menos que hayas instalado libgdal-dev:

sudo apt-get install libgdal-dev

con eso hecho,

export CPLUS_INCLUDE_PATH=/usr/include/gdal

export C_INCLUDE_PATH=/usr/include/gdal

y luego

pip install GDAL

La compilación se completó y tengo GDAL en mi env virtual. ¡Uf!

(edición 2018) Nota: Para asegurarse de que instala la versión correcta y evite cualquier problema. recupera la versión con gdal-config --version . y luego:

pip install GDAL==version
    
respondido por el Paul Whipp 11.10.2013 - 08:37
33

Los archivos de encabezado no se pueden encontrar por alguna razón. Tal vez usted está operando dentro de un Entorno Virtual o no están donde deberían estar por alguna razón. En cualquier caso, puede especificar los directorios de inclusión al instalar gdal a través de pip.

primera descarga de gdal de python:

pip install --no-install GDAL

en versiones posteriores de pip (> = 9.0.0) pip install --no-install no existe:

pip download GDAL

luego especifique dónde están los encabezados:

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

luego instálalo:

pip install --no-download GDAL

en versiones posteriores de pip (> = 9.0.0) pip install --no-download no existe:

sudo python setup.py install --include-dirs=/usr/include/gdal

Aquí hay otra forma de instalar gdal python:

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

despues de eso abre IDLE:

from osgeo import gdal

y ya estás listo para irte

    
respondido por el nickves 08.07.2012 - 23:33
17

Después de seguir un subconjunto de este consejo, así es como obtuve la instalación de Python GDAL 1.11.0 (la solución debería ser independiente de la versión, ver más abajo) para que funcione en Ubuntu 14.04 con pip:

Instalar dependencias:

sudo apt-get install libgdal-dev libgdal1h

pip instala pasando la ruta de inclusión (prefijo con sudo para la instalación en todo el sistema) e indicando a pip que instale la versión que coincida con la versión de GDAL instalada en el sistema:

pip install --global-option=build_ext --global-option="-I/usr/include/gdal" GDAL==\'gdal-config --version\'
    
respondido por el dennisobrien 24.10.2014 - 03:05
11

Instalando el paquete gdal de Python en virualenv en Linux

GDAL proporciona un buen conjunto de herramientas para las operaciones relacionadas con GEO. Sin embargo, instalarlo en virtualenv en Linux no es una tarea trivial.

Esta receta describe, cómo hacerlo.

  

nota

     

aquí utilizo gdal en minúsculas para el paquete Python y mayúsculas GDAL para   biblioteca general del sistema.

Requisitos

  • permitir el uso de bibliotecas osgeo (instaladas a través del paquete gdal Python) en virtualenv
  • permitir la instalación en Linux Ubuntu

Métodos de instalación

Hay varios métodos para la instalación. Uno requiere compilación y toma unos minutos más.

El otro está usando el paquete de ruedas del paquete pygdal y es muy rápido. De todos modos, para crear el paquete de rueda, uno necesita crearlo una vez y la creación incluye el paso de compilación de todos modos.

Acerca de GDAL paquetes y versiones

GDAL es una biblioteca general basada en C (++) para cálculos relacionados con GEO.

GDAL las utilidades pueden instalarse en todo el sistema, lo que hace que las bibliotecas compartidas disponible, pero no instala el paquete Python en sí.

GDAL viene en diferentes versiones y cada distribución de Linux puede instalación predeterminada versión diferente.

El paquete de Python gdal requiere compilación y no es trivial de instalar en sistemas basados en Linux, ya que se espera que pocas variables ambientales sean conjunto. Esto hace que la instalación en virtualenv sea más difícil.

Cada versión de gdal puede asumir una versión diferente de GDAL y fallará la instalación si la versión esperada no está presente en el sistema.

El paquete Python pygdal es una alternativa a gdal , que instala exactamente el lo mismo que gdal , pero lo hace de una forma mucho más amigable con el virtualenv.

pygdal viene en versiones que reflejan la versión relacionada GDAL . Así que tener GDAL La versión 1.10.1 en el sistema deberá instalar pygdal versión 1.10.1.

El paquete de Python gdal (así como pygdal ) usa el paquete raíz de python llamado osgeo y tiene un conjunto de submódulos, uno de los cuales es osgeo.gdal .

Si es necesario, se pueden instalar otras versiones que no sean las predeterminadas de GDAL y usado. Esto está fuera del alcance de esta descripción.

Los paquetes de ruedas se pueden compilar de forma cruzada, esto también está fuera del alcance.

Instalando GDAL en el sistema

Como pygdal requiere GDAL de bibliotecas compartidas para estar presentes, debemos instalar ellos primero.

Suponiendo que GDAL aún no está instalado, llamar a gdal-config se quejará y le daremos una pista sobre cómo hacer un seguimiento:

$ gdal-config --version
The program 'gdal-config' is currently not installed. You can install it by typing:
sudo apt-get install libgdal-dev

Sigue la sugerencia e instálala:

$ sudo apt-get install libgdal-dev

Cada distribución puede usar una versión diferente de GDAL . Para saber cual utilizamos:

$ gdal-config --version
1.10.1

Ahora ya sabes, GDAL está instalado y la versión es 1.10.1 (la versión puede variar).

Instale pygdal del paquete fuente (requiere compilación)

Actualmente, pygdal se proporciona solo en el paquete tar.gz, que contiene Paquetes de fuentes y requiere compilación.

Suponiendo que la versión de GDAL es 1.10.1 y que nuestro virtualenv es ya activado:

$ pip install pygdal==1.10.1

Es posible que tarde un poco en completarse, es necesario que se adormezca, lo que también puede Requiere un poco de compilación. Solo espera.

Comprueba, está instalado:

$ pip freeze|grep pygdal
pygdal==1.10.1.0

De ahora en adelante, puedes usar el paquete osgeo en tu código Python como quieras. exactamente de la misma manera que si lo instalara por gdal Python paquete.

Creando el paquete de ruedas para pygdal

Tenga en cuenta que los paquetes de ruedas deben crearse exactamente para el mismo arquitectura, es decir, debe coincidir con:

  • arquitectura de la CPU
  • SO (Linux / Windows)

En nuestro caso, también debe coincidir con la versión de GDAL instalada.

Los siguientes pasos se pueden hacer en virtualenv o no, como quieras.

Primero, asegúrese de que el paquete de ruedas esté instalado:

$ pip install wheel

Suponiendo que tienes GDAL instalado y tiene la versión 1.10.1:

$ pip wheel pygdal==1.10.1.0

y espera, hasta que se complete.

Después de esto, encontrará la caseta del subdirectorio y contendrá paquetes con extensión 'whl':

$ ls wheelhouse
numpy-1.9.1-cp27-none-linux_x86_64.whl
pygdal-1.10.1.0-cp27-none-linux_x86_64.whl

Instalar pygdal de los paquetes de ruedas

La instalación desde paquetes con formato de rueda es mucho más rápida (un segundo en comparación con los minutos), ya que no requiere compilación.

Tenga en cuenta que el directorio con paquetes de ruedas puede tener cualquier nombre, usaremos solo el nombre de la timonera.

Activar virtualenv primero.

Asegúrese de tener, en el directorio de la caseta, ambos paquetes de ruedas requeridos (para pygdal y numpy ).

Asegúrese de que GDAL esté instalado y la versión coincida con la versión de pygdal .

Instale pygdal del paquete de ruedas:

$ pip install pygdal==1.10.1.0 -f wheelhouse

La -f wheelhouse apuntará al directorio con archivos whl.

No es necesario instalar numpy , se instala automáticamente.

    
respondido por el Jan Vlcinsky 04.12.2014 - 10:40
8

Sí, parece funcionar lo siguiente antes de ejecutar PIP:

exportar CPLUS_INCLUDE_PATH = / usr / include / gdal

exportar C_INCLUDE_PATH = / usr / include / gdal

    
respondido por el selimnairb 24.06.2013 - 04:54
6

El problema con la instalación de pip gdal es que solo obtiene los enlaces, no toda la biblioteca, por lo que puede ser complicado. Una forma de resolverlo es usar el comando pip para descargar, pero no instalar. Luego ajustas la ubicación del encabezado desde el archivo de configuración. Entonces pip instala eso. meh.

Estaba teniendo el mismo problema, pero me di cuenta de que escribir un script de tela para recompilar gdal y generar los enlaces de python iba a tomar menos tiempo. Incluso se obtiene el beneficio de filegdb con eso. Continúa y usa la lista que escribí o adáptala al contenido de tu corazón.

    
respondido por el Ragi Yaser Burhum 06.07.2012 - 16:57
3

Más tarde, esto proporciona la ruta de inclusión sin tener que abandonar la instalación de pip: Uno puede configurar la ruta de inclusión usando una variable de entorno.

Suponiendo que los encabezados están en / usr / include / gdal, emita un

export CPLUS_INCLUDE_PATH=/usr/include/gdal

antes de ejecutar pip.

    
respondido por el Crischan 17.11.2012 - 11:59
3

Después de buscar una solución a la derecha e izquierda, aquí hay algo que me funciona en Ubuntu 14.04, incluso desde un virtualenv sin acceso a los paquetes del sistema:

  • Instalar dependencias:

    sudo apt-get install libgdal-dev libgdal1h libgdal1-dev
    
  • Establezca las banderas del compilador:

    export CFLAGS=$(gdal-config --cflags)
    
  • Instale la versión correspondiente a las bibliotecas del sistema (en el momento de escribir Ubuntu Trusty está usando los encabezados 1.10):

    pip install GDAL==1.10.0
    
respondido por el F.X. 29.09.2014 - 14:40
2

Ahora puede usar virtualenv y setuptools versión amigable de los enlaces de python GDAL estándar pygdal .

    
respondido por el drnextgis 29.10.2014 - 08:35
2

Estaba teniendo problemas similares en una Mac. Así lo resolví:

En primer lugar, configuro un entorno virtual Python 2.7 utilizando virtualenv. La distribución de Python se instaló en un directorio llamado 'env'.

Luego usé fink para instalar gdal

fink selfupdate
fink update-all
fink install gdal

También instalé gdal-dev, pero es posible que esto no haya sido necesario ya que puede que ya se haya instalado con gdal.

Revisé la versión instalada usando:

gdal-config --version

En mi instalación, produjo el resultado 1.11.1

La instalación fink de gdal instaló el archivo de encabezado cpl_port.h en / sw / include / gdal1. Revisa tu propia instalación. Entonces entré:

export CPLUS_INCLUDE_PATH=/sw/include/gdal1
export C_INCLUDE_PATH=/sw/include/gdal1
env/bin/pip install pygdal==1.11.1

Eso pareció funcionar para mí, pero aún no he probado la instalación.

    
respondido por el user1718097 28.12.2014 - 11:12
2

En Fedora 24, que tiene GDAL 2.0.2 en sus repositorios, tuve que instalar el paquete Python de esta manera:

pip install \
  --global-option=build_ext \
  --global-option="-I/usr/include/gdal/" \
  GDAL==2.0.1
    
respondido por el akaihola 10.11.2016 - 22:00
2

Recibía un error similar al intentar instalar los enlaces GDAL de Python en un mac (OS 10.10.5). Instalé el software GDAL base de enlace utilizando la descarga "Completa". Tuve que establecer tres variables de entorno.

exportar C_INCLUDE_PATH = / Library / Frameworks / GDAL.framework / Headers exportar CPLUS_INCLUDE_PATH = / Library / Frameworks / GDAL.framework / Headers export LIBRARY_PATH = / Library / Frameworks / GDAL.framework / Versions / Current / unix / lib

La última pieza fue agregar /Library/Frameworks/GDAL.framework/Programs a mi PATH.

echo 'export PATH = / Library / Frameworks / GDAL.framework / Programs: $ PATH' > > ~ / .bash_profile

Después de eso, pip pudo instalar GDAL para python. Espero que esto ayude.

    
respondido por el Gary Kahn 15.03.2017 - 16:02
1

Estos paquetes gdal 0.10.1 funcionan bien para Ubuntu 12.04: enlace

Paquetes gdal 0.10.1 para otra versión de ubuntu: enlace

    
respondido por el signo 08.11.2015 - 22:33
1

Para responder al aspecto específico de virtualenv de la pregunta:

pip3 search gdal
GDAL                      - GDAL: Geospatial Data Abstraction Library
pygdal                    - Virtualenv and setuptools friendly version of
                            standard GDAL python bindings

Tenga en cuenta que pygdal puede requerir una versión diferente de GDAL, en comparación con lo que requiere el paquete GDAL de enlaces python.

A continuación se muestra lo que solía obtener en versiones recientes de Fedora (20 y 23).

CPPFLAGS=-I/usr/include/gdal pip install gdal
    
respondido por el Kevin 30.09.2014 - 02:03
1

Instalando vía Pip con un solo comando

Suponiendo que el paquete de desarrollo GDAL está instalado y las versiones del archivo de encabezado son correctas, el único comando necesario para instalar GDAL desde los repositorios de PyPI es el siguiente:

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

Esto, obviamente, supone que la ubicación de los archivos de encabezado es /usr/include/gdal .

Instalar GDAL actualizado

Para instalar GDAL con el comando pip anterior, la versión de los archivos de encabezado debe ser similar a la versión que pip realizará la compilación. GDAL tiene una referencia binaria actualizada en: enlace .

Cómo instalar en OpenSUSE

Siguiendo el enlace anterior, hay una URL incorporada más abajo en un conjunto actualizado de paquetes GIS para OpenSUSE 42.1 enlace

zypper ar -f <URL>

Reemplace con el paquete apropiado. Y si no usa zypper , hay más información en enlace

    
respondido por el DanCat 14.11.2016 - 19:21
1

He tenido el mismo problema en Windows 10. Después de algunos experimentos vine con esta solución.

  1. Descargue e instale Python 3.6 (si no está instalado) después de la instalación alterar las variables de entorno %código% %código%
  2. Descargue * .whl para obtener la versión correcta de Python desde enlace
  3. Descargue e instale enlace
  4. PYTHONPATH=c:\python36 (* .whl from step2)
respondido por el zimirrr 22.12.2017 - 17:31
0

Si está ejecutando una distribución basada en Debian, las bibliotecas de GDAL python están disponibles a través de su administrador de paquetes y se pueden instalar simplemente con

sudo apt install python-gdal o sudo apt install python3-gdal

    
respondido por el Alex McVittie 10.12.2017 - 23:54
0

Si está usando Docker, abrimos nuestro contenedor, eso simplifica el uso de GDAL y Python 3. El contenedor captura los pasos descritos anteriormente para permitirle usar GDAL rápidamente con sus aplicaciones.

thinkwhere / gdal-python

    
respondido por el Iain Hunter 18.04.2018 - 11:50
0

En Ubuntu 16.04 con conda en contenedor docker (pila jupyter)

apt-get update
apt-get install libgdal1-dev -y
gdal-config --version
export CFLAGS=$(gdal-config --cflags)
pip install GDAL==1.11.2
    
respondido por el Luke W 25.05.2018 - 17:49
0

En ubuntu, una solución más sencilla para instalar la última versión de gdal para python3: instalar archivos de biblioteca a través de libgdal-dev y envoltorio de python a través de python-gdal

sudo apt-get install libgdal-dev
sudo apt-get install python3-gdal

para python2:

sudo apt-get install python-gdal
    
respondido por el beahacker 16.11.2018 - 08:16
0

También puede encontrar problemas con el uso de la memoria.

Cuando se ejecuta pip install gdal==2.2.3 gcc se inicia para compilar algo y aumenta el uso de la memoria.

Si no tiene suficiente memoria, el compilador falla, con un mensaje como

  

'x86_64-linux-gnu-gcc' falló con el estado de salida 4

Para solucionarlo, necesitas agregar más RAM o liberar algunos.

    
respondido por el Yvain 29.11.2018 - 15:12

Lea otras preguntas en las etiquetas