Search code examples
pythonpython-3.xubuntu-14.04anacondagraph-tool

How to install graph-tool for Anaconda Python 3.5 on linux-64?


I'm trying to install graph-tool for Anaconda Python 3.5 on Ubuntu 14.04 (x64), but it turns out that's a real trick.

I tried this approach, but run into the problem:

The following specifications were found to be in conflict:
  - graph-tool
Use "conda info <package>" to see the dependencies for each package.

Digging through the dependencies led to a dead-end at gobject-introspection

 

So I tried another approach:

Installed boost with conda, then tried to ./configure, make, and make install graph-tool... which got about as far as ./configure:

===========================
Using python version: 3.5.2
===========================
checking for boostlib >= 1.54.0... yes
checking whether the Boost::Python library is available... yes
checking whether boost_python is the correct library... no
checking whether boost_python-py27 is the correct library... no
checking whether boost_python-py27 is the correct library... (cached) no
checking whether boost_python-py27 is the correct library... (cached) no
checking whether boost_python-py35 is the correct library... yes
checking whether the Boost::IOStreams library is available... yes
configure: error: Could not link against boost_python-py35 !

I know this is something about environment variables for the ./configure command and conda installing libboost to Anaconda's weird place, I just don't know what to do, and my Google-fu is failing me. So this is another dead end.

Can anyone who's had to install graph-tool recently in linux-64 give me a walkthrough? It's a fresh VM running in VMWare Workstation 10.0.7


Solution

  • Installing graph-tool 2.26 for Anaconda Python 3.5, Ubuntu 14.04.

    Note: as of me writing this, the ostrokach channel conda install of graph-tool was only at version 2.18.

    Here's the docker file I use to install graph-tool 2.26. There's likely a cleaner way, but so far this is the only thing I've managed to cobble together that actually works.

    NOTE: If you're unfamiliar with docker files and you'd just like to do the install from the terminal, ignore the first line (starting with FROM), ignore every occurrence of the word RUN, and what you're left with is a series of commands to execute in a terminal.

    FROM [your 14.04 base image]
    
    RUN conda upgrade -y conda
    RUN conda upgrade -y matplotlib
    
    RUN \
    add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
    apt-get update -y && \
    apt-get install -y gcc-5 g++-5 && \
    update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5
    
    RUN wget https://github.com/CGAL/cgal/archive/releases/CGAL-4.10.2.tar.gz && \
    tar xzf CGAL-4.10.2.tar.gz && \
    cd cgal-releases-CGAL-4.10.2/ && \
    cmake . && \
    make && \
    make install
    
    RUN cd /tmp && \
    # note: master branch of repo appears relatively stable, has not been updated since 2016
    git clone https://github.com/sparsehash/sparsehash.git && \
    cd sparsehash && \
    ./configure && \
    make && \
    make install
    
    RUN apt-get update
    RUN apt-get install -y build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev
    RUN apt-get install -y autogen autoconf libtool shtool
    
    # install boost
    RUN cd /tmp && \
    wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz && \
    tar xzvf boost_1_66_0.tar.gz && \
    cd boost_1_66_0 && \
    sudo ./bootstrap.sh --prefix=/usr/local && \
    sudo ./b2 && \
    sudo ./b2 install
    
    # install newer cairo
    RUN cd /tmp && \
    wget https://cairographics.org/releases/cairo-1.14.12.tar.xz && \
    tar xf cairo-1.14.12.tar.xz && \
    cd cairo-1.14.12 && \
    ./configure && \
    make && \
    sudo make install
    
    RUN cd /tmp && \
    wget https://download.gnome.org/sources/libsigc++/2.99/libsigc++-2.99.10.tar.xz && \
    tar xf libsigc++-2.99.10.tar.xz && \
    cd libsigc++-2.99.10 && \
    ./configure && \
    make && \
    sudo make install && \
    sudo cp ./sigc++config.h /usr/local/include/sigc++-3.0/sigc++config.h
    
    RUN cd /tmp && \
    wget https://www.cairographics.org/releases/cairomm-1.15.5.tar.gz && \
    tar xf cairomm-1.15.5.tar.gz && \
    cd cairomm-1.15.5 && \
    ./configure && \
    make && \
    sudo make install && \
    sudo cp ./cairommconfig.h /usr/local/include/cairomm-1.16/cairomm/cairommconfig.h
    
    RUN conda install -y -c conda-forge boost pycairo
    RUN conda install -y -c numba numba=0.36.2
    
    RUN conda install -y -c libboost py-boost && \
    conda update -y cffi dbus expat pycairo pandas scipy numpy harfbuzz setuptools boost
    
    RUN apt-get install -y apt-file dbus libdbus-1-dev && \
    apt-file update
    
    RUN apt-get install -y graphviz
    RUN conda install -y -c conda-forge python-graphviz
    
    RUN sudo apt-get install -y valgrind
    
    RUN apt-get install -y libcgal-dev libcairomm-1.0 libcairomm-1.0-dev libcairo2-dev python-cairo-dev
    
    RUN conda install -y -c conda-forge pygobject
    RUN conda install -y -c ostrokach gtk
    
    RUN cd /tmp && \
    wget https://git.skewed.de/count0/graph-tool/repository/release-2.26/archive.tar.bz2 && \
    bunzip2 archive.tar.bz2 && \
    tar -xf archive.tar && \
    cd graph-tool-release-2.26-b89e6b4e8c5dba675997d6f245b301292a5f3c59 && \
    # Fix problematic parts of the graph-tool configure.ac file
    sed -i 's/PKG_INSTALLDIR/#PKG_INSTALLDIR/' ./configure.ac && \
    sed -i 's/AM_PATH_PYTHON(\[2\.7\])/AM_PATH_PYTHON(\[3\.5\])/' ./configure.ac && \
    sed -i 's/\${PYTHON}/\/usr\/local\/anaconda3\/bin\/python/' ./configure.ac && \
    sed -i '$a ACLOCAL_AMFLAGS = -I m4' ./Makefile.am && \
    sudo ./autogen.sh && \
    sudo ./configure CPPFLAGS="-I/usr/local/include -I/usr/local/anaconda3/pkgs/pycairo-1.15.4-py35h1b9232e_1/include -I/usr/local/include/cairo -I/usr/local/include/sigc++-3.0 -I/usr/include/freetype2" \
        LDFLAGS="-L/usr/local/include -L/usr/local/lib/cairo -L/usr/local/include/sigc++-3.0 -L/usr/include/freetype2" \
        PYTHON="/usr/local/anaconda3/bin/python" \
        PYTHON_VERSION=3.5 \
    sudo make && \
    sudo make install
    

    Warning: makeing graph-tool might take a couple hours and require >7 GB of ram.