我在我的Python应用程序中导入Osgeo库时遇到了困难。我在以下依赖性定义的conda环境中工作:
默认频道:
python=3.6.0
pandas=0.19.2
scikit-learn=0.18.1
numpy=1.12.1
requests=2.14.2
pyyaml=3.12
jinja2=2.9.6
forge通道:
gdal=2.2.1
使用PIP安装:
jellyfish
unidecode
scikit-optimize
skater==1.0.2
boto3==1.4.1
schedule==0.4.3
geopy==1.11.0
fuzzywuzzy==0.15.1
python-Levenshtein==0.12.0
我会收到以下错误:
from osgeo import ogr
File "/opt/conda/lib/python3.6/site-packages/osgeo/__init__.py", line 21, in <module>
_gdal = swig_import_helper()
File "/opt/conda/lib/python3.6/site-packages/osgeo/__init__.py", line 17, in swig_import_helper
_mod = imp.load_module('_gdal', fp, pathname, description)
File "/opt/conda/lib/python3.6/imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "/opt/conda/lib/python3.6/imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: libpoppler.so.66: cannot open shared object file: No such file or directory
我还尝试在Forge Channel中添加Poppler依赖性,但它行不通。
您有什么想法解决这个问题吗?一个仅基于修改CONDA环境的解决方案是优选的,但是由于我与Docker合作,更改我环境中的其他任何内容都不是一个问题。
我的应用程序直到今天一直运行良好,所以我想问题与依赖链的某些变化有关,但我无法弄清楚发生了什么。
如果您对conda-forge软件包有问题,则检查何时构建软件包是有帮助的:https://anaconda.org/conda-forge/gdal/files
如果您的软件包刚刚构建,则可能是依赖项仍在构建,因为conda-forge
的CI构建过程需要时间。
也可能是在Anaconda.org上查看该文件列表,您会发现另一个最新的,稍有不同的GDAL版本可以与您的环境一起使用。
还要注意,当使用多个渠道(例如defaults
和conda-forge
)时,您应该注意:https://conda-forge.org/docs/conda-forge_gotchas.html#using-multiple-channels