Mit zunehmender Laufzeit eines Ubuntu LTS Systems läuft die offizielle stabile Version von Python und dessen Abhängigkeiten weit auseinander. Wenn nun ein Anwenderprogramm oder ein Entwickler für seine Arbeit eine neuere Version von Python benötigt, müsste das Systempaket der LTS Distribution erneuert werden. Da Python aber wichtiger Bestandteil des Ubuntu Basis Systems darstellt, wird in aller Regel die Version von Pythen beibehalten und durch Canonical nie erneuert – ausgenommen Sicherheitsupdates.
Grundlegend kann man auf jedem Linux System eine neuere Python Versionen von Hand aus den Quellen heraus übersetzen und installieren. Hierbei muss aber eine alternative Installation genutzt werden, da man sich sonst die Systeminstallation der originalen DEB Pakete überschreibt! Nach dem Herunterladen und Auspacken würde das in etwa so aussehen (habe ich nicht geprüft):
cd Python-x.y.z ./configure make sudo make altinstall
Wichtig ist hier das altinstall  
Dieser Ansatz funktioniert prinzipiell, es ergibt sich aber ein neues Problem. Was ist, wenn man nun auch diese Version erneuern oder entfernen will oder sogar ein „down grade“ benötigt? Hierzu wäre die Nutzung von Debian Paketen hilfreich und genau das bezweckt Felix Krull mit seinem PPA DeadSnakes.
sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python2.7 python2.7-dev
Test:
user@host: ls -ahog /usr/bin/python* lrwxrwxrwx 1 9 2013-09-09 14:48 /usr/bin/python -> python2.6 lrwxrwxrwx 1 9 2013-09-09 14:48 /usr/bin/python2 -> python2.6 -rwxr-xr-x 1 2,5M 2013-09-26 21:13 /usr/bin/python2.6 -rwxr-xr-x 1 1,5K 2013-09-26 21:12 /usr/bin/python2.6-config -rwxr-xr-x 1 2,8M 2013-10-18 17:10 /usr/bin/python2.7 -rwxr-xr-x 1 1,7K 2013-10-18 17:09 /usr/bin/python2.7-config lrwxrwxrwx 1 16 2013-09-09 14:48 /usr/bin/python-config -> python2.6-config -rwxr-xr-x 1 4,1K 2009-05-03 16:24 /usr/bin/python_count -rwxr-xr-x 1 11K 2012-09-06 05:23 /usr/bin/python-mkdebian
Die originale Version Python 2.6 ist über den Link /usr/bin/python erhalten geblieben. Das neue Python 2.7 kann über /usr/bin/python2.7 benutzt werden:
user@host: python --version; python2 --version; python2.7 --version Python 2.6.5 Python 2.6.5 Python 2.7.4
easy_install einrichten:user@host: mkdir /tmp/py27prep && cd /tmp/py27prep user@host: curl -O http://python-distribute.org/distribute_setup.py ... user@host: sudo python2.7 distribute_setup.py Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz ... Installing easy_install script to /usr/local/bin Installing easy_install-2.7 script to /usr/local/bin ... Installed /usr/local/lib/python2.7/dist-packages/distribute-0.6.49-py2.7.egg ... Creating /usr/local/lib/python2.7/dist-packages/setuptools-0.6c11-py2.7.egg-info Creating /usr/local/lib/python2.7/dist-packages/setuptools.pth
pip einrichten:user@host: sudo easy_install-2.7 pip ... Downloading https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz#md5=6afbb46aeb48abac658d4df742bff714 ... Installing pip script to /usr/local/bin Installing pip-2.7 script to /usr/local/bin ... Installed /usr/local/lib/python2.7/dist-packages/pip-1.4.1-py2.7.egg
virtualenv einrichten:user@host: sudo pip-2.7 install virtualenv
...
  Downloading virtualenv-1.10.1.tar.gz (1.3MB): 1.3MB downloaded
...
    Installing virtualenv script to /usr/local/bin
    Installing virtualenv-2.7 script to /usr/local/bin
 Ich musste zuvor die Debian Pakete
 Ich musste zuvor die Debian Pakete pip und virtualenv entfernen, mit: sudo apt-get remove –purge python-pip
Test:
user@host: virtualenv --version; virtualenv-2.7 --version 1.10.1 1.10.1
mkdir /tmp/py27env && cd /tmp/py27env
virtualenv --no-site-packages --python=python2.7 .
source bin/activate
/tmp/py27env/bin genutzt. Die Option –no-site-packages sorgt für ein minimales Setup (nur pip, sonst nichts) und es müssen alle zusätzlichen Python Pakete über easy_install installiert werden.deactivate
Test:
user@host: mkdir /tmp/py27env && cd /tmp/py27env user@host: virtualenv --no-site-packages --python=python2.7 . Already using interpreter /usr/bin/python2.7 New python executable in ./bin/python2.7 Also creating executable in ./bin/python Installing Setuptools... ... ...done. Installing Pip... ... ...done.
user@host: source bin/activate
(py27env)user@host: python --version Python 2.7.4
(py27env)user@host: deactivate