Oops -- I spoke too soon. The install ran fine, but when I import I get:

>>> import igraph
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File
"/Users/Nick/anaconda/lib/python2.7/site-packages/igraph/__init__.py", line
34, in <module>
    from igraph._igraph import *
ImportError:
dlopen(/Users/Nick/anaconda/lib/python2.7/site-packages/igraph/_igraph.so,
2): Library not loaded: libxml2.2.dylib
  Referenced from:
/Users/Nick/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
>>>

Sorry, what a mess. :/ I'll try just doing a "make" from a github clone
tomorrow. Maybe that would run more smoothly.


On Mon, Jun 1, 2015 at 10:00 PM Nick Eubank <[email protected]> wrote:

> I tried the homebrew install followed by pip install python-igraph (#1),
> but still got the same error. Renaming the xml2-config in ~/anaconda/bin
> (#1) worked like a charm though -- thanks so much!
>
>
> On Thu, May 28, 2015 at 9:00 AM Nick Eubank <[email protected]> wrote:
>
>> Wow, thanks so much for digging into this Tamas! I'm traveling at a
>> conference and away from my desktop but will try these and report back when
>> I get home!
>> On Wed, May 27, 2015 at 4:48 PM Tamas Nepusz <[email protected]> wrote:
>>
>>> Hi Nick,
>>>
>>> I have researched this problem a bit tonight and here's what I found
>>> out. These
>>> are very technical details and might not help a lot at this stage, but
>>> I thought I'd send them to the mailing list anyway in case someone else
>>> is
>>> struggling with the same problem and finds this thread.
>>>
>>> The core of the problem is as follows. igraph needs to link to libxml2 to
>>> support reading GraphML files. When you install Anaconda Python, it
>>> brings its
>>> own copy of libxml2 in ~/anaconda/lib. Now, when igraph tries to figure
>>> out how
>>> to link to libxml2, it invokes an executable named xml2-config, which is
>>> supposed to print out the compiler and linker flags necessary to link to
>>> libxml2.
>>>
>>> OS X does not ship xml2-config by default, so in case of OS X, we fall
>>> back to
>>> an "educated guess" during the compilation phase, and this seems to work
>>> nicely. However, Anaconda Python ships its *own* copy of xml2-config, so
>>> igraph
>>> invokes Anaconda's xml2-config and uses the compiler and linker flags
>>> from
>>> there. For sake of comparison, these are the linker flags proposed by
>>> xml2-config in Anaconda Python:
>>>
>>> -L${HOME}/anaconda/lib -lxml2 -lz -liconv -lm
>>>
>>> and this is our "educated guess" that we would have used in case of a
>>> missing
>>> xml2-config:
>>>
>>> -lxml2
>>>
>>> Now, when the linker sees the flags suggested by Anaconda's
>>> libxml2-config, it
>>> tries to use the libxml2 library from Anaconda Python (since Anaconda's
>>> lib
>>> directory is inserted at the front of the library path), and
>>> subsequently it
>>> reads ${HOME}/anaconda/lib/libxml2.la to figure out libxml2's
>>> dependencies.
>>> libxml2.la references /usr/lib/libiconv.la, which does not exist on OS
>>> X, and
>>> the compilation fails.
>>>
>>> On my machine, the compilation worked even with Anaconda Python installed
>>> because I did _not_ have Anaconda's bin directory (i.e.
>>> ${HOME}/anaconda/bin)
>>> on my path (deliberately), so the compilation phase of igraph did _not_
>>> find
>>> Anaconda's xml2-config executable and used the "educated guess" instead.
>>> This
>>> made igraph link to the copy of libxml2 provided by OS X instead of
>>> libxml2
>>> provided by Anaconda Python, and I'm a bit unsure whether this could
>>> lead to
>>> further problems down the road (probably not), but the bottom line is
>>> that the
>>> compilation succeeded.
>>>
>>> At the moment, there are three workarounds:
>>>
>>> #1) Temporarily rename Anaconda's xml2-config to something else before
>>> installing igraph using "pip install python-igraph" so it is not found
>>> during
>>> the compilation phase. igraph will then link to libxml2 provided by OS X.
>>>
>>> #2) Patch ~/anaconda/lib/libxml2.la so it does not refer to
>>> /usr/lib/libiconv.la. I haven't tried this, but it would probably work.
>>>
>>> #3) Compile igraph's C core independently from Homebrew (http://brew.sh,
>>> using
>>> "brew install igraph"), and then try "pip install python-igraph". In
>>> this case,
>>> "pip install python-igraph" will find the copy of igraph's core C
>>> library from
>>> Homebrew and does not try to compile it on its own.
>>>
>>> All the best,
>>> Tamas
>>>
>>> > But I should add: it's a completely clean OS and conda install, so I
>>> > imagine whatever problem I'm running into isn't unique to me.
>>> >
>>> > On Sun, May 24, 2015 at 1:51 PM Nick Eubank <[email protected]>
>>> wrote:
>>> >
>>> > > (I'm on 10.10 if that matters)
>>> > >
>>> > > On Sun, May 24, 2015 at 1:51 PM Nick Eubank <[email protected]>
>>> wrote:
>>> > >
>>> > >> Thanks -- silly question, but any suggestions on how to trace that?
>>> Seems
>>> > >> like a lot goes on in this install, and it's not explicitly in any
>>> > >> options...
>>> > >>
>>> > >> Also interestingly, I seem to have the library, and even
>>> reinstalled it
>>> > >> to no avail...
>>> > >>
>>> > >> On Sun, May 24, 2015 at 4:35 AM Tamas Nepusz <[email protected]>
>>> wrote:
>>> > >>
>>> > >>> Hi Nick,
>>> > >>>
>>> > >>> > Tried doing a new python-igraph install on a new computer with
>>> clean
>>> > >>> > anaconda 2.7.3 install. Got:
>>> > >>> > [...]
>>> > >>> >     grep: /usr/lib/libiconv.la: No such file or directory
>>> > >>> >     sed: /usr/lib/libiconv.la: No such file or directory
>>> > >>> I have seen it a few times before -- it's quite common and not
>>> specific
>>> > >>> to
>>> > >>> igraph. (Googling for "missing libiconv.la" reveals quite a lot of
>>> > >>> hits). Some
>>> > >>> other .la file on your system (probably in /usr/lib, but maybe
>>> not) lists
>>> > >>> /usr/lib/libiconv.la as a dependency even though it should not be
>>> > >>> required. Try
>>> > >>> to find out which other .la file refers to libiconv.la and then
>>> either
>>> > >>> move
>>> > >>> that file aside temporarily or remove libiconv.la temporarily
>>> from the
>>> > >>> list of
>>> > >>> dependencies in that other file.
>>> > >>>
>>> > >>> T.
>>> > >>>
>>> > >>> _______________________________________________
>>> > >>> igraph-help mailing list
>>> > >>> [email protected]
>>> > >>> https://lists.nongnu.org/mailman/listinfo/igraph-help
>>> > >>>
>>> > >>
>>>
>>> > _______________________________________________
>>> > igraph-help mailing list
>>> > [email protected]
>>> > https://lists.nongnu.org/mailman/listinfo/igraph-help
>>>
>>>
>>> --
>>> T.
>>>
>>> _______________________________________________
>>> igraph-help mailing list
>>> [email protected]
>>> https://lists.nongnu.org/mailman/listinfo/igraph-help
>>>
>>
_______________________________________________
igraph-help mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/igraph-help

Reply via email to