由anaconda(libxml2.2.dylib)在OSX 10.10.5中导入python igraph时出错

时间:2015-10-01 14:35:01

标签: python macos igraph anaconda

我按照此线程installing python igraph中的说明为anaconda安装了python igraph库,因此成功安装了C核库和python包。但是,当我尝试在python中导入igraph库时,我收到以下错误

>>> import igraph
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/user/anaconda/lib/python2.7/site-packages/igraph/__init__.py", line 34, in <module>
    from igraph._igraph import *
ImportError: dlopen(/Users/user/anaconda/lib/python2.7/site-packages/igraph/_igraph.so, 2): Library not loaded: libxml2.2.dylib
  Referenced from: /Users/user/anaconda/lib/python2.7/site-packages/igraph/_igraph.so
  Reason: Incompatible library version: _igraph.so requires version 12.0.0 or later, but libxml2.2.dylib provides version 10.0.0

寻找类似的主题,我在Installation of python igraph with lxml problem找到了类似的问题。但是,如何解决这个问题并没有明确的方法。有谁知道如何修理它?提前谢谢。

2 个答案:

答案 0 :(得分:1)

Anaconda Python很奇怪 - 它附带了自己的版本libxml2,当你运行pip install python-igraph时,igraph可能与它相关联。但是,当您尝试导入igraph时,链接器会找到系统范围libxml2,它具有较低的ABI版本,因此您就会看到错误消息。

解决方法是确保在编译阶段,编译器不会选择Anaconda Python的libxml2。 igraph的Python界面中的setup.py实际上包含了这个解决方法 - 它试图检测何时在OS X上编译Anigraph的Anigraph,然后调整环境以确保链接器选择正确的版本libxml2。但是,只有在在您的计算机上安装了igraph的C核心时才启用此解决方法 - 安装程序将下载C核,调整环境以解决Anaconda Python,然后编译C核心和Python接口一起完成。

因此,解决方案可能是以下之一:

  1. 将Anaconda Python的libxml2移开(或者暂时从Anaconda Python的发行版重命名xml2-config),然后从Homebrew编译并安装C core。 (使用brew unlink igraphbrew uninstall igraphbrew install igraph为安全起见。然后,您可以运行pip install python-igraph

  2. 完全删除 Homebrew的igraph并运行pip install python-igraph - 它会下载C核心,执行必要的调整然后编译所有内容。

答案 1 :(得分:1)

我遇到了完全相同的问题,安装/强制链接private boolean checkLicense (String licenseNumber) { for(int i = 0; i < (realtorList.size() - 1); i++) { if (licenseNumber.equals(realtorList[i].getLicenseNumber())) { return true; } } return false; } 对我有用:

libxml2

其他人也报告了相同的解决方案,似乎正在发挥作用。