感谢网络上各位大神的辛苦探索,为我指出一条明路。
电脑是Ubuntu18.04。
创建python3.8的conda虚拟环境后,直接安装 gdal。
conda install -c conda-forge gdal
下载的gdal版本是3.6.2。
在Python环境下导入gdal
from osgeo import gdal
结果报错:
>>> from osgeo import gdal
Traceback (most recent call last):
File "/home/XXXX/anaconda3/envs/XXXX/lib/python3.8/site-packages/osgeo/__init__.py", line 30, in swig_import_helper
return importlib.import_module(mname)
File "/home/XXXX/anaconda3/envs/XXXX/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 657, in _load_unlocked
File "<frozen importlib._bootstrap>", line 556, in module_from_spec
File "<frozen importlib._bootstrap_external>", line 1166, in create_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ImportError: libpoppler.so.126: cannot open shared object file: No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/XXXX/anaconda3/envs/XXXX/lib/python3.8/site-packages/osgeo/__init__.py", line 46, in <module>
_gdal = swig_import_helper()
File "/home/XXXX/anaconda3/envs/XXXX/lib/python3.8/site-packages/osgeo/__init__.py", line 43, in swig_import_helper
return importlib.import_module('_gdal')
File "/home/XXXX/anaconda3/envs/XXXX/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_gdal'
根据网上各种分析可以得知,核心问题在于ImportError: libpoppler.so.126: cannot open shared object file: No such file or directory。libpoppler.so.126文件缺失了,查找网上解决办法知道需要下载正确的poppler库。
但是没有帖子介绍libpoppler.so.126是哪一个版本,自己也不会查。
最终,虽然没有找到那个版本对应,但找到了libpoppler.so.126下载地址,解决了问题。地址:https://drive.google.com/file/d/1HNGYJX8lYd1vXWclxy1Tr7D7TGsYpgTj/view?usp=drive_link。
根据stackoverflow.com/questions/77387754/no-module-named-gdal-and-gd...的解答办法,下载libpoppler.so.126文件,上传到服务器指定位置/home/XXXX/anaconda3/envs/XXXX/lib/下,解决问题。
Python 3.8.20 (default, Oct 3 2024, 15:24:27)
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from osgeo import gdal
>>> gdal.__version__
'3.6.2'
可能有帮助的文档
gdal下载地址:Index of /gdal/
参考博客:
对安装的解决方案讨论: