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/
所以:
- 我想我是通过伪造它想要引入的 unicode 库版本来实现的。
- 解决此问题的更好方法是什么?
- 导致此问题的幕后原因是什么?
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
所以我刚开始使用 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/
所以:
- 我想我是通过伪造它想要引入的 unicode 库版本来实现的。
- 解决此问题的更好方法是什么?
- 导致此问题的幕后原因是什么?
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