Disclaimer: i just posted this same answer to stack overflow:
https://stackoverflow.com/questions/2812520/pip-dealing-with-multiple-python-versions/50319252
(see that one for a more up-to-date answer)
Here is my take on the problem. Works for Python3. The main features are:
- Each Python version is compiled from source
- All versions are installed locally
- Does not mangle your system's default Python installation in any way
- Each Python version is isolated with virtualenv
The steps are as follows:
If you have several extra python versions installed in some other way, get rid of them, e.g., remove $HOME/.local/lib/python3.x, etc. (also the globally installed ones). Don't touch your system's default python3 version though.
Download source for different python versions under the following directory structure:
$HOME/ python_versions/ : download Python-*.tgz packages here and "tar xvf" them. You'll get directories like this: Python-3.4.8/ Python-3.6.5/ Python-3.x.y/ ...At each "Python-3.x.y/" directory, do the following (do NOT use "sudo" in any of the steps!):
mkdir root ./configure --prefix=$PWD/root make -j 2 make install virtualenv --no-site-packages -p root/bin/python3.x envAt "python_versions/" create files like this:
env_python3x.bash: #!/bin/bash echo "type deactivate to exit" source $HOME/python_versions/Python-3.x.y/env/bin/activateNow, anytime you wish to opt for python3.x, do
source $HOME/python_versions/env_python3x.bash
to enter the virtualenv
While in the virtualenv, install your favorite python packages with
pip install --upgrade package_nameTo exit the virtualenv and python version just type "deactivate"