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

anaconda(libxml2.2.dylib)在OSX 10.10.5中导入python igraph时出错,python,macos,igraph,anaconda,Python,Macos,Igraph,Anaconda,我按照本线程中的说明安装了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

我按照本线程中的说明安装了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
导入igraph 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/Users/user/anaconda/lib/python2.7/site packages/igraph/_init__.py”,第34行,在 从igraph.\u igraph导入* 导入错误:dlopen(/Users/user/anaconda/lib/python2.7/site-packages/igraph//u igraph.so,2):未加载库:libxml2.2.dylib 引用自:/Users/user/anaconda/lib/python2.7/site-packages/igraph//u igraph.so 原因:库版本不兼容:_igraph.so需要版本12.0.0或更高版本,但libxml2.2.dylib提供版本10.0.0
寻找类似的线程,我在这里发现了类似的问题。然而,如何解决这个问题,目前还没有一个明确的方法。有人知道怎么修吗?提前感谢。

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

解决方法是确保在编译阶段,编译器不会使用Anaconda Python的
libxml2
setup.py实际上包含了这个解决方法-它尝试检测您在OS X上针对Anaconda Python编译igraph时的情况,然后稍微调整环境以确保链接器选择正确版本的
libxml2
。但是,只有当您的机器上没有安装igraph的C核心时,才能启用此变通方法-安装程序将下载C核心,调整环境以使用Anaconda Python,然后在一个步骤中将C核心和Python接口编译在一起

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

  • 将Anaconda Python的libxml2移开(或者暂时从Anaconda Python的发行版中重命名
    xml2 config
    ),然后从自制中编译并安装C内核。(为了安全起见,请使用
    brew取消igraph
    brew卸载igraph
    brew安装igraph
    )。然后可以运行
    pip安装pythonigraph

  • 完全删除自制的igraph,只需运行
    pip install python igraph
    ——它将下载C内核,执行必要的调整,然后编译所有内容


  • 我遇到了完全相同的问题,安装/force-linking
    libxml2
    对我有效:

    brew install libxml2
    brew link --force libxml2
    

    其他人也报告了相同的解决方案,而且似乎有效。

    请参见我对另一个(但相关)问题的回答中的第1点:Hi@Tamás。我找到了所有出现的
    libxml2*.dylib
    ,它们都在
    usr/local/ceral/libxml2/2.9.2/lib//code>,
    usr/lib//code>,
    anaconda/lib
    opt/local/lib
    anaconda/pkgs/libxml2-2.9.0-1/lib>中,分别有12.2.0.10.9.0、12.2.0.0、12.2.0.0.0、12.2.0.0和12.0.0版本。根据您上一篇文章中的建议,我是否应该更改
    usr/lib/
    中的文件名,即10.9.0版本的文件名,并保留其他文件的原样?谢谢。不,恰恰相反-试着去掉那些版本为
    12.x
    ,重新编译,然后重新命名。原因是,当您尝试导入igraph时,链接器显然会找到版本为10.9.0的链接器,因此如果您重命名版本为10.9.0的链接器,然后重新编译igraph,它仍将使用12.0.0进行编译。(另外,ABI 10.9.0版的
    libxml2
    似乎是系统范围的libxml2,因此重命名它是危险的)。我尝试了您之前所说的,但它仍然抱怨导入igraph,它说
    原因:库版本不兼容:_igraph.so需要12.0.0或更高版本,但libxml2.2.dylib提供了10.0.0版本。
    我想知道它是否与执行安装的位置有关。我正在使用brew编译和安装核心
    brew安装igraph
    ,然后
    pip安装python igraph
    。但核心似乎在
    /usr/local/cillar/igraph/0.7.1
    中,python包在
    /Users/user/anaconda/lib/python2.7/site packages/igraph/
    中。有什么建议吗?我在下面添加了一个正确的答案-让我们继续讨论。Hi@Tamás。我尝试了两种建议的解决方案,但仍然得到了
    原因:库版本不兼容:_igraph.so需要12.0.0或更高版本,但libxml2.2.dylib提供了10.0.0版本。
    特别是,对于我做的第一个解决方案:1。重命名Anaconda文件夹中的
    libxml2.2dylib
    文件,即
    Anaconda/lib
    Anaconda/pkgs/libxml2-2.9.0-1/lib
    ;2. <代码>brew取消igraph的链接
    ;3. <代码>brew卸载igraph
    ;4. <代码>brew安装igraph
    ;5.
    pip安装pythonigraph
    ;6.重新命名我在1中更改的
    libxml2.2dylib
    文件。对于第二个解决方案,1。重命名Anaconda文件夹中的
    libxml2.2dylib
    文件,即
    Anaconda/lib
    Anaconda/pkgs/libxml2-2.9.0-1/lib
    ;2. <代码>brew取消igraph的链接;3. <代码>brew卸载igraph;4.
    pip安装pythonigraph
    ;5.重新命名我在1中更改的
    libxml2.2dylib
    文件。但还是一样的错误。我错过什么了吗?谢谢。嗨,塔玛斯。似乎我有多个版本的
    xml2 config
    文件。它们位于
    anaconda/pkgs/libxml2-2.9.2-0/bin
    a中