yolov8环境、openmmlab环境和gdal不兼容问题

文章描述了在Docker环境下,安装gdal后,使用Yolov8官方库时遇到找不到_gdal模块的问题。错误源于GLIBCXX_3.4.30版本不匹配和libpoppler.so.126文件缺失。解决方案包括在.bashrc中添加conda库的环境变量,降级numpy,或在openmmlab环境中选择更低版本的gdal安装。
摘要由CSDN通过智能技术生成

yolov8环境问题
在docker环境下安装gdal后,使用yolov8官方库时gdal会找不到;详情如下:

使用conda install gdal后再使用pip install ultralytics后会报以下错误:
ModuleNotFoundError: No module named ‘_gdal’
百度查找是找不到conda的lib下的文件;

详细报错

Traceback (most recent call last):
  File "/opt/conda/lib/python3.8/site-packages/osgeo/__init__.py", line 30, in swig_import_helper
    return importlib.import_module(mname)
  File "/opt/conda/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: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/conda/lib/python3.8/site-packages/osgeo/../../../libgdal.so.32)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "detect_cut_final.py", line 9, in <module>
    from RS_Utils_final import *
  File "/mnt/zhisuan_nfs/dev-geovis-ai/appnfs/org_33/xt_jokbsa/code/yolov8-1/RS_Utils_final.py", line 4, in <module>
    from osgeo import gdal, ogr
  File "/opt/conda/lib/python3.8/site-packages/osgeo/__init__.py", line 46, in <module>
    _gdal = swig_import_helper()
  File "/opt/conda/lib/python3.8/site-packages/osgeo/__init__.py", line 43, in swig_import_helper
    return importlib.import_module('_gdal')
  File "/opt/conda/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_gdal'

由报错可以看出是找不到/opt/conda/lib/python3.8/site-packages/osgeo/…/…/…/libgdal.so.32;

解决

在~/.bashrc中添加安装的conda lib位置的环境变量;
export LD_LIBRARY_PATH=/opt/conda/lib:$LD_LIBRARY_PATH

或者在使用脚本前添加环境
export LD_LIBRARY_PATH=/opt/conda/lib:$LD_LIBRARY_PATH && python detect.py


还有一种可能是在安装ultralytics时,升级了numpy导致的(因为在安装ultralytics前gdal是可用的);可以降级numpy试试,或者安装低版本ultralytics


openmmlab问题

使用conda install gdal 后报同上类似的错,但使用上述解决方案不行

报错

Traceback (most recent call last):
  File "/opt/conda/lib/python3.8/site-packages/osgeo/__init__.py", line 30, in swig_import_helper
    return importlib.import_module(mname)
  File "/opt/conda/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 1101, 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 "demo/detect_cut_final.py", line 25, in <module>
    from demo.cloud_drive_util import *
  File "./demo/cloud_drive_util.py", line 17, in <module>
    from osgeo import gdal
  File "/opt/conda/lib/python3.8/site-packages/osgeo/__init__.py", line 46, in <module>
    _gdal = swig_import_helper()
  File "/opt/conda/lib/python3.8/site-packages/osgeo/__init__.py", line 43, in swig_import_helper
    return importlib.import_module('_gdal')
  File "/opt/conda/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named '_gdal'


解决方案

分析:使用openmmlab环境比较老,直接使用conda install gdal 进行安装安装的版本过高3.6.2;
解决降低gdal版本先试用conda search gdal查看gdal能安装那些版本;conda search gdal==3.4.0安装第一版本就可以了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值