Conda 依赖问题

Conda dependency woes

所以我刚开始使用 conda 安装 Python 包。

Python 3.6.0 |Anaconda 4.3.0 (64-bit)| (default, Dec 23 2016, 12:22:00) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux

我想安装 geopandas 所以我 运行

conda install -c conda-forge geopandas

一切似乎都工作正常,但在尝试导入 geopandas 时我收到一条错误消息,我追溯到 fiona:

>>> import fiona
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/nfs/see-fs-02_users/matmdpd/anaconda3/lib/python3.6/site-packages/fiona/__init__.py", line 69, in <module>
    from fiona.collection import Collection, BytesCollection, vsi_path
  File "/nfs/see-fs-02_users/matmdpd/anaconda3/lib/python3.6/site-packages/fiona/collection.py", line 9, in <module>
    from fiona.ogrext import Iterator, ItemsIterator, KeysIterator
ImportError: libicui18n.so.56: cannot open shared object file: No such file or directory

anaconda3\lib\ 中,我找到了 libicui18n.so 和一个符号链接 libicui18n.so.54 -> libicui18n.so。这给了我从 libicui18n.so.56(和相关库)创建符号链接的想法,这在一定程度上起作用,我收到了关于缺少版本 58 的错误消息。几个符号链接,我有 import geopandas 工作!

错误的库文件似乎是 C++ unicode 支持,请参阅 http://site.icu-project.org/

所以:

Conda-forge 人员似乎已经通过 geopandas=0.2.1 的构建版本 3 for python3.6.

解决了这个问题

在幕后,问题出现了,因为 fiona 所需的库之一依赖于 directly/indirectly 在 libicu (major version 56) 上,您可以通过键入以下内容进行验证:

$ ldd /path/to/conda/lib/python3.6/site-packages/fiona/_err.cpython-36m-x86_64-linux-gnu.so

理想情况下,应该将此版本的 libicu 指定为安装 geopandas 时安装的其中一个软件包的依赖项。

在这种情况下,您可以通过键入以下内容自行升级 libicu:

$ conda install -c conda-forge icu=56.1

如果这没有帮助,您可以使用以下位置提供的配方自己构建包:https://github.com/conda-forge/icu-feedstock/tree/master/recipe

我已将 libicu 58.2 上传到我的频道。您可以通过键入命令来安装它:

$ conda install -c nehaljwani libicu=58.2