问题
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):
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.
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.)
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