Updated !! Hey there… Here is the procedure I used to have a nice scientific python stack, fitting my needs anyways, starting with a fresh linux Mint 17 install. Please note that things got a lot simpler with the latest anaconda releases.
ssh and git
sudo apt-get install openssh-client openssh-server sudo apt-get install git git-el git-gui gitk
Those are always useful
I fail to understand why this is not in all decent distribution:
sudo apt-get install imagemagick inkscape
Although I use less and less latex, here it is anyway
sudo apt-get install texlive-common texlive-lang-french texlive-lang-english\ texlive-lang-spanish texlive-doc-en texlive-fonts-extra texlive-xetex texlive-extra-utils
emacs (yeah sublime text is nifty, but it’s not free)
sudo apt-get install emacs emacs-goodies.el emacsen-common sudo apt-get install pylint pyflakes python-nose # code checkers
jed is a light text-mode only emacs
sudo apt-get install jed
emacs for python repo provides all you need to have nice python features
in emacs, such as syntax checks, completion etc.
cd .emacs.d git clone git://github.com/gabrielelanaro/emacs-for-python.git
Also add this to
USERNAME to your user name…):
(load-file "/home/USERNAME/.emacs.d/emacs-for-python/epy-init.el") (epy-setup-checker "pyflakes %f") (epy-setup-ipython) (require 'highlight-indentation) (add-hook 'python-mode-hook 'highlight-indentation) ;;; Bellow is a header with what's need for python 2.7 compatibility (defun tv-insert-python-header () "insert python header at point" (interactive) (insert "# -*- coding: utf-8 -*-\n\n" "from __future__ import unicode_literals\n" "from __future__ import division\n" "from __future__ import absolute_import\n" "from __future__ import print_function\n")) (global-set-key (kbd "C-c e p") 'tv-insert-python-header)
sudo apt-get install build-essential gfortran gfortran-multilib
Using Python 3
Since I first wrote this post, I started using anaconda for my basic installation. It really eases the management and creation of virtual environments, updates and package management. In a recent update, you can have a ‘native’ python 3.4 install.
After downloading anaconda from the above link (they ask for your email but that doesn’t translate into flows of spam), just run the installer :
cd directory/where/youdownloaded/thefile ### you might need to chmod the script chmod +x Anaconda-2.0.1-Linux-x86_64.sh ./Anaconda-2.0.1-Linux-x86_64.sh ### update your bashrc to take into account the new paths source ~/.bashrc
Creating a Python 3 virtual environment
Easy as pie:
conda create -n python3 python=3 anaconda
Now you can use this new environment by tiping:
source activate python3
Your terminal prompt should now be prepended with a
python3 here is just a name, you can use anything you want. Also some advocate the use of one virtual environment for each project… I’m not very fond of this strategy.
If you need recent packages, that might not be included in the conda distribution, you can use
pip from whithin the virtual environment, as so:
pip install --upgrade scikit-image
We use Christoph Gohlke’s fabulous
tifffile.py to parse tifffiles.
wget http://www.lfd.uci.edu/~gohlke/code/tifffile.py mv tifffile.py ~/python3/lib/python3.3/site-packages/
The whole procedure is way easier than it use to be in the old days. Most of the time they ship the latest stable of the packages. Furthermore, it is common practice in the exosystem to test ones package through travis continuous integration by installing MiniConda and the required packages… So you end up with a vetted set of libraries.
Using Python 2
Creating a Python 2 virtual environment
You guessed it:
conda create -n python2 python=2.7 anaconda
I think if you just say
python=2 it will install version 2.6, which you only want if you have to develop with it for legacy reasons (but even debian stable ships 2.7, so that should be a rare occurence by now).
What is graph-tool?
From graph-tool website:
Graph-tool is an efficient Python module for manipulation and statistical analysis of graphs (a.k.a. networks). Contrary to most other python modules with similar functionality, the core data structures and algorithms are implemented in C++, making extensive use of template metaprogramming, based heavily on the Boost Graph Library. This confers it a level of performance which is comparable (both in memory usage and computation time) to that of a pure C/C++ library.
Add this to
deb http://downloads.skewed.de/apt/raring raring universe deb-src http://downloads.skewed.de/apt/raring raring universe
raring above with your distribution (or the parent Ubuntu/Debian distro).
Then download the public key from the website and add it with apt-key
as instructed in graph-tool’s website.
apt-key add <key filename> sudo apt-get update sudo apt-get install python3-graph-tool python-graph-tool
link the packages to the respective environments
graph-tool is not included (yet?) in conda, and the compilation is, well, complicated, we have to link the library to our packages:
ln -s /usr/lib/python3/dist-packages/graph_tool /home/USER/anaconda/envs/python3/lib/python3.4/site-packages/graph_tool ln -s /usr/lib/python2.7/dist-packages/graph_tool /home/USER/anaconda/envs/python2/lib/python2.7/site-packages/graph_tool
Some more stuffs
I added this in my
.bashrc for git clarity (thanks to Hadrien Mary
## git status in prompt export PS1='\[\033[01;32m\]\h\[\033[01;34m\] \w\[\033[01;33m\]$(__git_ps1)\[\033[01;34m\] \$\[\033[00m\] ' # export PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[01;33m\]$(__git_ps1)\[\033[01;34m\] \$\[\033[00m\] ' export GIT_PS1_SHOWDIRTYSTATE=1