igraph (igraph.org/) is my preferred library for graph manipulation. The core library is written in C and is easy to extend (igraph.org/doc/html/index.html), there are bindings to Python (igraph.org/doc/python/index.html) and R (igraph.org/doc/R/00Index.html), and Gabor and Tamas are really nice and helpful guys (lists.gnu.org/archive/html/igraph-help/). That said, I've always noticed that one stumbling block for users has been building the Python bindings with plotting support. Since it's something I do often, I thought I'd put up a post on installing the dependencies, compiling and installing the igraph trunk, and testing that everything works.
The first step is getting the necessary libraries. These libraries provide a number of numerical libraries, Python headers, and configuration tools to make software development easier.
$ sudo apt-get install build-essential bzr autoconf automake libtool flex bison python-dev python-cairo libgmp3-dev libglpk-dev The next step is to download the source and the compile the core C library. These lines download the current source from Launchpad, configure the library for installation in /usr, and then compile and install.
$ bzr branch lp:igraph
$ cd igraph
$ ./configure --prefix=/usr
$ make && sudo make install Now we're ready to compile and install the Python bindings. These lines also ensure that Python knows where to load the core C library shared extension.
$ cd interfaces/python
$ sudo python setup.py install
$ sudo updatedb && sudo locate libigraph.so.0 And finally, we're ready to test that everything works. This simple example creates a dyad and plots it.
$ python
>>> import igraph
>>> g = igraph.Graph([(0,1)]
>>> p = igraph.drawing.plot(g) If you saw an image pop up after entering the last line, you've succeeded! Happy igraph-ing!