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