Here we provide further details for two methods of installing scientific Python on a linux system. In this case you will not use a standalone Python distribution like Anaconda or Enthought, but instead use the operating system installation of Python:

  • System install in /usr/bin and /usr/lib where you have root privilege
  • Non-root setup with an existing full-featured Python on the system

System install with root

For a modern linux installation such as Ubuntu, the system Python version will be 2.6 or newer and all of the required core packages are available as package installs. The instructions below have been developed and tested with Ubuntu 10. Corresponding packages for recent Fedora are probably available but this has not been verified. In this case you will NOT use the Enthought Python Distribution.

The benefit of using a root install via the system package manager is that it is simple and all dependencies are managed for you. The downside is that the package versions tend to be older and so you don’t keep up with the latest code development. In Ubuntu 10 the core packages (NumPy, Matplotlib) are a year or so out of date. Unless you are really pushing for the latest features, the older stable versions will work perfectly well.

Install the core packages for analysis with the following:

sudo apt-get install python-dev
sudo apt-get install ipython
sudo apt-get install python-numpy
sudo apt-get install python-scipy
sudo apt-get install python-matplotlib
sudo apt-get install python-setuptools

Quick installation check

Open a new terminal window and type:

which ipython

You should see:


Non-root setup using virtualenv

If you are using a computer on a system managed network which has Python 2.6 or 2.7 installed along with NumPy, SciPy, matplotlib, and easy_install, then you might want to look at the following. This setup assumes you do not have root privilege and takes advantage of the virtualenv package. This allows you to install new and updated packages to a virtual clone of this Python installation without having root.

Assume that the system Python installation is installed in the root directory $PYTHONROOT, so that you find python and easy_install in $PYTHONROOT/bin. Now install pip, distribute, and virtualenv:

$PYTHONROOT/bin/easy_install --user --upgrade virtualenv

Now use virtualenv to make a local virtual Python which is a clone of the system Python but resides in a directory (e.g. ~/py27) where you have write access:

~/.local/bin/virtualenv --system-site-packages ~/py27

The --system-site-packages option tells virtualenv to make links to all of the packages that are already installed in the system Python. In general this is convenient, but you may want to start with a clean Python installation by leaving out that option.

To use this virtual Python just do:

Shell Command
csh source ~/py27/bin/activate.csh
bash . ~/py27/bin/activate

For convience you might make an alias for these startup commands in your csh or bash startup file. Once you’ve activated the virtual Python environment then you do not use the --user option in easy_install or pip install. All installs will be made in your local environment.

To finish up you need to install ipython in this virtual environment, even if it already exists in the system python:

pip install --upgrade ipython


You can make managing your virtual environments even easier with the popular virtualenvwrapper package.

Quick installation check

Open a new terminal window and type:

which ipython

You should see something like the following: