Python3.8环境安装gdal

感谢网络上各位大神的辛苦探索,为我指出一条明路。

电脑是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/

参考博客:

  1. gdal库import报错
  2. 从头安装gdal库(Linux环境下的Python版)
  3. linux下安装gdal

对安装的解决方案讨论:

  1. github.com/ContinuumIO/anaconda-issues/issues/10351
  2. github.com/ContinuumIO/anaconda-issues/issues/9449
  3. stackoverflow.com/questions/77387754/no-module-named-gdal-and-gd...

### 如何在 Python 3.8安装 GDAL 库 要在 Python 3.8 环境下成功安装 GDAL 库,可以按照以下方法操作: #### 方法一:通过 `pip` 安装预编译二进制包 GDAL 的官方文档提供了关于如何使用 `pip` 来安装Python 绑定的内容[^4]。对于 Windows 用户来说,推荐的方式是从 Christoph Gohlke 提供的非官方 Windows 版本轮子文件中获取适合的版本。 以下是具体命令: ```bash pip install wheel pip install https://download.lfd.uci.edu/pythonlibs/tk5vqjbi/GDAL3.7.0‑cp38‑cp38‑win_amd64.whl ``` 注意上述链接中的版本号 (`GDAL3.7.0`) 和平台架构 (`win_amd64`) 需要根据实际需求调整。可以通过访问 [Christoph Gohlke 的页面](https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal) 获取最新可用的 GDAL 轮子文件。 #### 方法二:构建自定义 GDAL 包 如果需要更灵活的支持或者特定的功能模块,则可以选择自行编译 GDAL 源码并绑定到 Python 环境中。此过程较为复杂,通常适用于高级开发者或特殊场景下的部署工作。 主要步骤如下: 1. 下载最新的 GDAL 源代码压缩包; 2. 使用 CMake 工具配置项目参数(如指定目标路径、启用选项等); 3. 编译完成后运行测试脚本来验证安装效果; 这种方法虽然耗时较长但也能够确保获得完全定制化的解决方案。 #### 注意事项 当尝试加载较大的栅格图像数据集时可能会遇到内存不足错误(`MemoryError`)等问题[numpy.core._exceptions.MemoryError][^3], 此类情况建议优化程序逻辑减少一次性读取的数据量大小, 或者升级硬件设施提高计算资源利用率. ```python import gdal from osgeo import ogr,osr,gdal_array,numpy as np def open_tiff(file_path): try: dataset = gdal.Open(file_path) band = dataset.GetRasterBand(1) array_data=band.ReadAsArray() return array_data except Exception as e: print(f"An error occurred while opening the TIFF file:{e}") data=open_tiff(&#39;example.tif&#39;) print(data.shape) ``` 以上是一个简单的例子展示如何利用GDAL库打开TIFF格式文件并将其转换成NumPy数组形式以便进一步分析处理.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值