Issue when imoporting GDAL : ImportError, Library not loaded, Image not found

 ̄綄美尐妖づ 提交于 2019-12-21 17:05:09

问题


Since yesterday I struggle to import some libraries such as GDAL (or iris) and I allways get the same type of outputs.

>>> import gdal
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "gdal.py", line 28, in <module>
    _gdal = swig_import_helper()
  File "gdal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_gdal', fp, pathname, description)
ImportError: dlopen(./_gdal.so, 2): Library not loaded: @rpath/libicui18n.56.dylib
  Referenced from: /Users/zoran/anaconda/lib/libgdal.20.dylib
  Reason: image not found

I searched in my files and found:

  • 1 files containing libicui18n
  • 2 files containing _gdal.so

    /Users/zoran/anaconda/pkgs/icu-54.1-0/lib/libicui18n.54.1.dylib

    /Users/zoran/anaconda/lib/python2.7/site-packages/osgeo/_gdal.so

    /Library/Frameworks/GDAL.framework/Versions/2.1/Python/2.7/site-packages/osgeo/_gdal.so

This morning I could import gdal without problem and suddenly (I don't know what I did) it was totally impossible.

I tried to: - uninstall/install gdal - uninstall/install anaconda and install again gdal - create different new environments (in python2 and python3) and install only gdal

I don't know what this libicui18n.56.dylib is, neighter libgdal.20.dylib.

When I type otool -L with the name of the paths above I get:

libicui18n.54.dylib (compatibility version 54.0.0, current version 54.1.0)
@loader_path/./libicuuc.54.dylib (compatibility version 54.0.0, current version 54.1.0)
@loader_path/./libicudata.54.dylib (compatibility version 54.0.0, current version 54.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

@rpath/libgdal.1.dylib (compatibility version 20.0.0, current version 20.5.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

/Library/Frameworks/GDAL.framework/Versions/2.1/GDAL (compatibility version 22.0.0, current version 22.1.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

When I type conda info:

           platform : osx-64
      conda version : 4.2.9
   conda is private : False
  conda-env version : 4.2.9
conda-build version : 2.0.2
     python version : 2.7.12.final.0
   requests version : 2.11.1
   root environment : /Users/zoran/anaconda  (writable)
default environment : /Users/zoran/anaconda
   envs directories : /Users/zoran/anaconda/envs
      package cache : /Users/zoran/anaconda/pkgs
       channel URLs : https://conda.anaconda.org/anaconda/osx-64/
                      https://conda.anaconda.org/anaconda/noarch/
                      https://conda.anaconda.org/scitools/osx-64/
                      https://conda.anaconda.org/scitools/noarch/
                      https://conda.anaconda.org/conda-forge/osx-64/
                      https://conda.anaconda.org/conda-forge/noarch/
                      https://repo.continuum.io/pkgs/free/osx-64/
                      https://repo.continuum.io/pkgs/free/noarch/
                      https://repo.continuum.io/pkgs/pro/osx-64/
                      https://repo.continuum.io/pkgs/pro/noarch/
        config file : /Users/zoran/.condarc
       offline mode : False

I am wondering if somehow the libraries are saved in the wrong directrory?

I've seen many similar issues but no trick to fix the problem.

Thanks for helping


回答1:


I found a solution to my problem here.

Thank you for the clear explanation of "ocefpaf":

You problem seems like the usuall mismatch between conda-forge and defaults. Can you try the following instructions (if you do want to use conda-forge's gdal of course):

  1. Make sure you have the latest conda to take advantage of the channel preference feature. You can do that by issuing conda update conda in the root env of your conda installation.

  2. Edit your .condarc file and place the conda-forge on top of defaults. The .condarc usually lives in your home directory. See mine below. (Note that the more channels you have you are more likely to face issues. I recommend having only defaults and conda-forge.)

  3. Issue the following commands to check if you will get the correct installation:

conda create --yes -n TEST_GDAL python=3.5 gdal
source activate TEST_GDAL
python -c "from osgeo import gdal; print(gdal.__version__)"

If you get 2.1.1 you got a successful installation of the latest version from conda-forge. We always recommend users to work with envs as the the example above. But you do not need to use Python 3.5 (conda-forge has 3.4 and 2.7 also) and you do not need to name the env TEST_GDAL.

And here is my .condarc file.

> cat .condarc
channels:
- conda-forge
- defaults
show_channel_urls: true



回答2:


I have the same problem.

conda install -f jpeg=8

conda install libgdal

solve my problem



来源:https://stackoverflow.com/questions/40131266/issue-when-imoporting-gdal-importerror-library-not-loaded-image-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!