Python modules are usually very easy to install, typically requiring nothing more that `pip install <package>` for basically any operating system. For `graph-tool`, however, the situation is different. This is because, in reality, `graph-tool` is a C++ library wrapped in Python, and it has many C++ dependencies such as [Boost](http://www.boost.org/), [CGAL](http://www.cgal.org/) and [expat](http://expat.sourceforge.net/), which are not installable via Python-only package management systems such as [pip](http://www.pip-installer.org/). Because the module lives between the C++ and Python worlds, its installation is done more like a C++ library rather than a typical python module. This means it inherits some of the complexities common of the C++ world that some Python users do not expect.
Python modules are usually very easy to install, typically requiring nothing more that `pip install <package>` for basically any operating system. For `graph-tool`, however, the situation is different. This is because, in reality, `graph-tool` is a C++ library wrapped in Python, and it has many C++ dependencies such as [Boost](http://www.boost.org/), [CGAL](http://www.cgal.org/) and [expat](http://expat.sourceforge.net/), which are not installable via Python-only package management systems such as [pip](http://www.pip-installer.org/). Because the module lives between the C++ and Python worlds, its installation is done more like a C++ library rather than a typical python module. This means it inherits some of the complexities common of the C++ world that some Python users do not expect.
The easiest way to get going is to use a package manager, for which the installation is fairly straightforward. This is the case for some GNU/Linux distributions (Arch, Gentoo, Debian & Ubuntu) as well as for MacOS users using either [Macports](http://www.macports.org/) or [Homebrew](http://brew.sh/).
The easiest way to get going is to use a package manager, for which the installation is fairly straightforward. This is the case for some [GNU/Linux distributions](#gnulinux)(Arch, Gentoo, Debian & Ubuntu) as well as for [MacOS](#macos) users using either [Macports](http://www.macports.org/) or [Homebrew](http://brew.sh/).
Alternatively, `graph-tool` can be installed from source, by manual compilation. The module uses the standard [GNU build system](https://en.wikipedia.org/wiki/GNU_Build_System) for this (i.e. `./configure; make; make install`), and users wishing to go on this route are recommended to familiarize themselves with it. An in-depth resource is the [Autotools Mythbuster](https://autotools.io/index.html).
Alternatively, `graph-tool` can be installed from source, by [manual compilation](#manual-compilation). The module uses the standard [GNU build system](https://en.wikipedia.org/wiki/GNU_Build_System) for this (i.e. `./configure; make; make install`), and users wishing to go on this route are recommended to familiarize themselves with it. [Basic instructions](#manual-compilation) are given below, and an in-depth resource is the [Autotools Mythbuster](https://autotools.io/index.html).
# GNU/Linux
# Installation via package managers
## GNU/Linux
## Arch
### Arch
[Packages for Arch](https://aur.archlinux.org/packages/python-graph-tool/) are available in the Arch User Repository. You can install it with yaourt:
[Packages for Arch](https://aur.archlinux.org/packages/python-graph-tool/) are available in the Arch User Repository. You can install it with yaourt:
...
@@ -23,7 +24,7 @@ yaourt -S python-graph-tool
...
@@ -23,7 +24,7 @@ yaourt -S python-graph-tool
```
```
depending on the python version.
depending on the python version.
## Gentoo
### Gentoo
An ebuild for graph-tool is included in the default [Gentoo](https://www.gentoo.org/) repository. Just do
An ebuild for graph-tool is included in the default [Gentoo](https://www.gentoo.org/) repository. Just do
...
@@ -32,7 +33,7 @@ emerge graph-tool
...
@@ -32,7 +33,7 @@ emerge graph-tool
```
```
to install it.
to install it.
## Debian & Ubuntu
### Debian & Ubuntu
For [Debian](http://www.debian.org/), add the following lines to your `/etc/apt/sources.list`,
For [Debian](http://www.debian.org/), add the following lines to your `/etc/apt/sources.list`,
...
@@ -81,10 +82,8 @@ sub 4096R/1A7ECE03 2013-10-17 [expires: 2018-10-16]
...
@@ -81,10 +82,8 @@ sub 4096R/1A7ECE03 2013-10-17 [expires: 2018-10-16]
sub 4096R/23F08CAF 2013-10-17 [expires: 2018-10-16]
sub 4096R/23F08CAF 2013-10-17 [expires: 2018-10-16]
```
```
<aname="macos"></a>
## MacOS X
### Macports
# MacOS X
## Macports
A portfile is available for installation in MacOS X systems with [Macports](http://www.macports.org/). It is included in the [standard macports list](http://www.macports.org/ports.php?by=name&substr=graph-tool). Just run the following command to install it:
A portfile is available for installation in MacOS X systems with [Macports](http://www.macports.org/). It is included in the [standard macports list](http://www.macports.org/ports.php?by=name&substr=graph-tool). Just run the following command to install it:
...
@@ -92,7 +91,7 @@ A portfile is available for installation in MacOS X systems with [Macports](http
...
@@ -92,7 +91,7 @@ A portfile is available for installation in MacOS X systems with [Macports](http
port install py-graph-tool
port install py-graph-tool
```
```
## Homebrew
### Homebrew
With [Homebrew](http://brew.sh/) the installation is also straightforward, since a formula for it is included in the "science" list:
With [Homebrew](http://brew.sh/) the installation is also straightforward, since a formula for it is included in the "science" list:
```
```
...
@@ -101,7 +100,7 @@ brew install graph-tool
...
@@ -101,7 +100,7 @@ brew install graph-tool
```
```
If you encounter an error installing graph-tool via Macports or Homebrew, please file a bug report via each respective project, not to graph-tool directly.
If you encounter an error installing graph-tool via Macports or Homebrew, please file a bug report via each respective project, not to graph-tool directly.
#### Compiler choice in MacOS X
##### Compiler choice in MacOS X
TL;DR : Just use [clang](http://clang.llvm.org/) for everything.
TL;DR : Just use [clang](http://clang.llvm.org/) for everything.
...
@@ -111,6 +110,8 @@ In an ideal world, the correct version should be the latest one from the "stock"
...
@@ -111,6 +110,8 @@ In an ideal world, the correct version should be the latest one from the "stock"
(If possible, a much better option would be to use a less [defective](http://www.defectivebydesign.org/apple) platform in the first place.)
(If possible, a much better option would be to use a less [defective](http://www.defectivebydesign.org/apple) platform in the first place.)