<- [[..:cue]] ====== Python-Alternativen ====== ~~TASK:Stephan Linz?2013-11-08~~ ===== Problemstellung ===== ==== Betroffene Systeme ==== * alle Ubuntu Versionen, vornehmlich LTS Versionen ==== Beschreibung ==== 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. ===== Lösung ===== 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 [[https://launchpad.net/~fkrull|Felix Krull]] mit seinem [[https://launchpad.net/~fkrull/+archive/deadsnakes|PPA DeadSnakes]]. ==== Hier ein Beispiel für Python 2.7 auf Ubuntu Lucid 10.04.4 LTS ==== === Installation === == PPA einrichten und Python 2.7 installieren == 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 == Python 2.7 einrichten == - ''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 FIXME 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 === Benutzen === - neuen Ordner für die Laufzeitumgebung anlegen und betreten: mkdir /tmp/py27env && cd /tmp/py27env - virtuelle Laufzeitumgebung darin anlegen: virtualenv --no-site-packages --python=python2.7 . - virtuelle Laufzeitumgebung aktivieren: source bin/activate - Was immer nun gemacht wird, es werden die Skripts in ''/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. - am Ende wird die virtuelle Laufzeitumgebung wieder aufgelöst: 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 {{tag>python ubuntu}}