没有名为_gdal的模块

时间:2017-05-16 15:31:07

标签: python gdal

我正在尝试运行Python脚本test.py来测试gdal库。该脚本包含以下行:

from osgeo import gdal

在那一行,我得到追溯:

File "~/test.py", line 9, in <module>
    from osgeo import gdal
File "/usr/local/lib/python2.7/site-packages/GDAL-2.2.0/osgeo/__init__.py", line 21, in <module>
    gdal = swing_import_helper()
File "/usr/local/lib/python2.7/site-packages/GDAL-2.2.0/osgeo/__init__.py", line 13, in swig_import_helper
    import gdal
ImportError: No module named _gdal

我没有看到任何_gdal Python文件或任何定义_gdal的脚本。我是否需要安装另一个(先决条件)库来定义_g​​dal? GDAL包应该包括安装库和运行导入gdal的脚本所需的一切。

4 个答案:

答案 0 :(得分:0)

就我而言,我已经从源代码(使用./configure --with-python && make构建GDAL,然后尝试直接从./swig/python/build/lib.linux-x86_64-2.7/源文件夹运行Python工具。这会导致相同的错误:

[beni@vendace gdal-2.4.0]$ PYTHONPATH=./swig/python/build/lib.linux-x86_64-2.7/:$PYTHONPATH python -c 'from osgeo import gdal'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/beni/gdal/gdal-2.4.0/swig/python/build/lib.linux-x86_64-2.7/osgeo/__init__.py", line 21, in <module>
    _gdal = swig_import_helper()
  File "/home/beni/gdal/gdal-2.4.0/swig/python/build/lib.linux-x86_64-2.7/osgeo/__init__.py", line 13, in swig_import_helper
    import _gdal
ImportError: No module named _gdal

在安装GDAL(使用make install)之后,_gdal.so模块已构建,我现在可以导入gdal:

[beni@vendace gdal-2.4.0]$ LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH PYTHONPATH=/usr/local/lib64/python2.7/site-packages/:$PYTHONPATH python -c 'from osgeo import gdal; print(gdal.__version__);'
2.4.0

答案 1 :(得分:0)

在我的情况下,从python osgeo目录中的site-packagesdist-packages中找到lib目录,然后将_gdal.cpython-35m-x86_64-linux-gnu.so重命名为{{1} },其他文件也是如此。然后您可以正确导入gdal。

答案 2 :(得分:0)

我遇到了同样的问题,并通过查找我的 osgeo(gdal)安装lib 路径并将其添加到 PYTHONPATH

中来解决了该问题。
  • 使用此命令find / -name "_gdal*"查找您的osgeo lib安装路径
  • 之后,您需要将建立的路径添加到PYTHONPATH
export PYTHONPATH=/path/to/lib/python2.7/site-packages/:$PYTHONPATH
# you can also add it permanently to your ~/.bashrc

答案 3 :(得分:0)

由于某些人仍然对此有疑问(包括我在内),所以我想澄清一下:

ImportError: No module named _gdal是指文件_gdal.so。这是一个动态库,当使用python3从源构建gdal时应自动创建该库:

./configure --with-python=python3 && make

但是,即使configure告诉我将使用SWIG python bindingsmake命令也不会建立它们。我认为python绑定通常一直是GDAL的问题。

现在,如果您不想安装GDAL(make install),则必须手动构建绑定:转到/gdal/swig/python并运行{{1} }。之后,将创建所有模块和库:确保可以找到路径,并且一切正常,包括按OP希望运行的测试。

如果您想安装GDAL,Benedikt编写的内容足以使一切正常工作。