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
