23 votos

Error de importación: no hay módulo llamado _gdal_array

Estoy usando python 2.7 y tengo instalado gdal. Quiero leer una imagen .jpg entera de una vez y por eso he usado la sentencia

import gdal
from gdalconst import *
driver = gdal.GetDriverByName('JPEG')
driver.Register()
dataset = gdal.Open('1.jpg', GA_ReadOnly)

pero estoy recibiendo un error de importación para gdal_array.

ImportError                               Traceback (most recent call last)
<ipython-input-7-6a16047a395b> in <module>()
----> 1 data = band.ReadAsArray(0, 0, cols, rows)

C:\Users\DELL\Anaconda\lib\site-packages\osgeo\gdal.pyc in ReadAsArray(self, xoff,        yoff, win_xsize, win_ysize, buf_xsize, buf_ysize, buf_obj)
1174     def ReadAsArray(self, xoff=0, yoff=0, win_xsize=None, win_ysize=None,
1175                     buf_xsize=None, buf_ysize=None, buf_obj=None):
-> 1176         import gdalnumeric
1177 
1178         return gdalnumeric.BandReadAsArray( self, xoff, yoff,

C:\Users\DELL\Anaconda\lib\site-packages\osgeo\gdalnumeric.py in <module>()
----> 1 from gdal_array import *
2 from numpy import *

C:\Users\DELL\Anaconda\lib\site-packages\osgeo\gdal_array.py in <module>()
 24                 fp.close()
 25             return _mod
 ---> 26     _gdal_array = swig_import_helper()
 27     del swig_import_helper
 28 else:

 C:\Users\DELL\Anaconda\lib\site-packages\osgeo\gdal_array.py in swig_import_helper()
 16             fp, pathname, description = imp.find_module('_gdal_array', [dirname(__file__)])
 17         except ImportError:
 ---> 18             import _gdal_array
 19             return _gdal_array
 20         if fp is not None:

 ImportError: No module named _gdal_array

Por favor, díganme qué puede estar fallando. Soy nuevo en el uso de GDAL.

36voto

Root Null Puntos 18

Asegúrese de tener numpy instalado antes de intentar instalar los enlaces Python de GDAL; sin numpy parece que el _gdal_array no se instalará el código nativo.

Si te encuentras en esta situación, elimina gdal instalando numpy y volver a instalar gdal podría ayudar:

    pip uninstall gdal

    pip install numpy

    pip install GDAL==$(gdal-config --version) --global-option=build_ext --global-option="-I/usr/include/gdal"

2voto

Nick Puntos 3115

Me encontré con el mismo problema y parece que muchos otros también cuando se utiliza el entorno Anaconda. La respuesta aceptada aquí no funcionó para mí.

Sin embargo, lo solucioné siguiendo los métodos de instalación alternativos que aparecen en la GDAL de Anaconda. documentación de instalación para las distribuciones de paquetes de conda-forge. La última opción ( conda install -c conda-forge/label/cf201901 gdal ) finalmente me dio un entorno de trabajo con gdal_array. También actualizó/reinstaló un montón de otros paquetes, así que ten paciencia mientras recopila información. Tardó unos minutos.

No creo que necesites probarlos todos como hice yo, supongo que puedes saltar al último. ¡También sospecho que la etiqueta puede cambiar con el tiempo - así que me gustaría comprobar la documentación en el enlace antes de simplemente cortar y pegar el comando de arriba si usted mira este post unos meses o años después de escribir esto!

1voto

Randy Wyant Puntos 1

Tuve el mismo problema y lo solucioné construyendo gdal desde cero, después de tener Python 2.7 con numpy instalado.

1voto

kyloc Puntos 28

Estoy utilizando gdal dentro de un entorno virtual conda. Tuve el mismo error, y pude resolverlo desinstalando y volviendo a instalar algunas de las dependencias clave de gdal.

Para determinar sus dependencias: conda info gdal

Más concretamente, tenía que conda uninstall lo siguiente:

  • gdal
  • numpy
  • libgdal
  • geos

Nota rápida sobre geos: no aparecía como dependencia al consultar con conda info . Sin embargo, al intentar reinstalar gdal, descubrí que había librerías conflictivas asociadas a geos, así que lo desinstalé por rigor.

Entonces, un rápido conda install gdal reinstalará gdal y sus dependencias. Cuando reinstale gdal de nuevo con la línea anterior, vuelva a comprobar que está instalando la versión de gdal > 2.0

Estos comandos específicos serán diferentes dependiendo de su distribución python / gestor de paquetes. Pero con suerte, siguiendo un procedimiento similar de desinstalación / reinstalación le permitirá obtener una versión de trabajo.

-1voto

Acabo de solucionarlo colocando los archivos correctos extraídos del RPM. Aquí es donde obtengo mi RPM de 64 bits http://www.filewatcher.com/d/Mandriva/2010.1/x86_64/Sciences/Geosciences/gdal-python-1.7.2-1mdv2010.1.x86_64.rpm.220418.html

Utilizando el comando de extracción rpm proporcionado por http://www.cyberciti.biz/tips/how-to-extract-an-rpm-package-without-installing-it.html

Pude encontrar los archivos _gdal_array.* perdidos en la siguiente ruta usr/lib64/python2.6/site-packages/GDAL-1.7.2-py2.6-linux-x86_64.egg/osgeo/

Entonces simplemente copia _gdal_array.* a python2.7/site-packages/osgeo/ y problema resuelto. Espero que esto ayude a cualquier persona con problemas similares.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X