我正在尝试运行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的脚本。我是否需要安装另一个(先决条件)库来定义_gdal? GDAL包应该包括安装库和运行导入gdal的脚本所需的一切。
答案 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-packages
或dist-packages
中找到lib
目录,然后将_gdal.cpython-35m-x86_64-linux-gnu.so
重命名为{{1} },其他文件也是如此。然后您可以正确导入gdal。
答案 2 :(得分:0)
我遇到了同样的问题,并通过查找我的 osgeo(gdal)安装lib 路径并将其添加到 PYTHONPATH
中来解决了该问题。find / -name "_gdal*"
查找您的osgeo lib安装路径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 bindings,make
命令也不会建立它们。我认为python绑定通常一直是GDAL的问题。
现在,如果您不想安装GDAL(make install
),则必须手动构建绑定:转到/gdal/swig/python
并运行{{1} }。之后,将创建所有模块和库:确保可以找到路径,并且一切正常,包括按OP希望运行的测试。
如果您想安装GDAL,Benedikt编写的内容足以使一切正常工作。