anaconda(libxml2.2.dylib)在OSX 10.10.5中导入python igraph时出错
我按照本线程中的说明安装了anaconda的python igraph库,因此成功安装了C核心库和python包。但是,当我尝试在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
>>> 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
libxml2
。但是,只有当您的机器上没有安装igraph的C核心时,才能启用此变通方法-安装程序将下载C核心,调整环境以使用Anaconda Python,然后在一个步骤中将C核心和Python接口编译在一起
因此,解决方案可能是以下之一:
xml2 config
),然后从自制中编译并安装C内核。(为了安全起见,请使用brew取消igraph
,brew卸载igraph
,brew安装igraph
)。然后可以运行pip安装pythonigraph
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中