Python nur für mich...
Sehnsüchtig warte ich auf das nächste Debian Release. Eigentlich ist Testing schon für die meisten Anwendungen stabil genug. Aber es warten noch ca 200 Bugs, die als Releasekritisch eingestuft sind. Somit ist noch ein bischen Zeit, indem ich die Wartezeit von Squeeze zu Wheezy überbrücken muss. In diesem Falle bin ich kürzlich über das Python Modul fabric gestolpert. Echt interessant und es verlangte nach Tests. Allerdings ist die in Squeeze enthaltene Version doch recht betagt...
Also mal schauen, ob ich nicht neuere Python Versionen und Module installiert bekomme, ohne dabei alles in die Systempfade installieren zu müssen. Python bietet dort interessante Möglichkeiten. Mit dem Programm pip lassen sich module bequem nachinstallieren. Aber auch dort ist die Squeeze Version so alt, dass es noch nicht die Möglichkeit gibt die Module in das Homeverzeichnis eines einzelnen Users zu installieren. pip selbst gibt an ein Replacement für easy_install aus den Setuptools zu sein. Und easy_install ist in der bei Squeeze mitgelieferten Version in der Lage ins User-Verzeichnis zu installieren. Viola. Installationspfad gefunden...
Als erstes installiert man eine aktuelle Version von pip. Wird easy_install mit der Option --user aufgerufen, erfolgt die Installation in das Verzeichnis $HOME/.local des aktuellen Users.
Ist die Installation erfolgreich durchgelaufen, befindet sich im Verzeichnis $HOME/.local/bin ein Executeable namens pip in der neuen Version.
Ist pip installiert, gibt es nur noch eines zu tun. Der Pfad für die Suche nach den Binarys sollte angepasst werden:
Den Schnipsel packt man am besten in die .bash_profile, damit es nach dem nächsten Login auch noch gültig ist. Einen Funktionstest kann man in der Shell ganz einfach mit which python durchführen. Es muss python in $HOME/.local/bin/ angezeigt werden.
Damit ist das erste Zwischenziel erreicht und ich kann mit
die aktuelle Version von fabric installieren.
Zusätzlich wird jetzt noch das Python Packet virtualenv installiert. Virtualenv ermöglicht es einen python-Interpreter mit allen Abhängigkeiten in ein extra Verzeichnis zu installieren. Die Dateien aus /usr/ und Co werden bei dieser Version nicht angefasst. Es ist also auch möglich eine neue Version eines Moduls sauber zu installieren, ohne die OS-gelieferte Version zu deinstallieren oder zu überschreiben.
Virtualenv erwartet als Parameter den Pfad zur neuen Python-Umgebung. Beim Aufruf wird der Python-Interpreter und einige Basis-Programme und Librarys von Python in das angegebene Verzeichnis übertragen.
Möchte ich diese Installation anstatt jener in $HOME/.local/ nutzen, muss ich entsprechend der o.g. Anleitung die PATH-Umgebungsvariable anpassen.
Ein Python-Script beginnt so wie viele andere Scripte unter Unix auch mit der Angabe des Interpreters. Meistens steht dort #!/usr/bin/python in der ersten Zeile und das Script wird mit dem angegebenen Interpreter ausgeführt.
Trägt man statt dessen in den Scripten
ein, sucht das Programm env nach einem Interpreter mit dem Namen python in den Verzeichnissen, die in $PATH angegeben sind. Welcher Interpreter verwendet wird, hängt jetzt also von der Reihenfolge der Verzeichnisse in $PATH ab. Dies funktioniert nach gleichem Prinzip im Übrigen auch mit perl, php...
Happy coding.
Also mal schauen, ob ich nicht neuere Python Versionen und Module installiert bekomme, ohne dabei alles in die Systempfade installieren zu müssen. Python bietet dort interessante Möglichkeiten. Mit dem Programm pip lassen sich module bequem nachinstallieren. Aber auch dort ist die Squeeze Version so alt, dass es noch nicht die Möglichkeit gibt die Module in das Homeverzeichnis eines einzelnen Users zu installieren. pip selbst gibt an ein Replacement für easy_install aus den Setuptools zu sein. Und easy_install ist in der bei Squeeze mitgelieferten Version in der Lage ins User-Verzeichnis zu installieren. Viola. Installationspfad gefunden...
Als erstes installiert man eine aktuelle Version von pip. Wird easy_install mit der Option --user aufgerufen, erfolgt die Installation in das Verzeichnis $HOME/.local des aktuellen Users.
easy_install --user pip
Ist die Installation erfolgreich durchgelaufen, befindet sich im Verzeichnis $HOME/.local/bin ein Executeable namens pip in der neuen Version.
Ist pip installiert, gibt es nur noch eines zu tun. Der Pfad für die Suche nach den Binarys sollte angepasst werden:
PATH=$HOME/.local/bin:$PATH
export PATH
Den Schnipsel packt man am besten in die .bash_profile, damit es nach dem nächsten Login auch noch gültig ist. Einen Funktionstest kann man in der Shell ganz einfach mit which python durchführen. Es muss python in $HOME/.local/bin/ angezeigt werden.
Damit ist das erste Zwischenziel erreicht und ich kann mit
pip install fabric
die aktuelle Version von fabric installieren.
Kür
Zusätzlich wird jetzt noch das Python Packet virtualenv installiert. Virtualenv ermöglicht es einen python-Interpreter mit allen Abhängigkeiten in ein extra Verzeichnis zu installieren. Die Dateien aus /usr/ und Co werden bei dieser Version nicht angefasst. Es ist also auch möglich eine neue Version eines Moduls sauber zu installieren, ohne die OS-gelieferte Version zu deinstallieren oder zu überschreiben.
easy_install --user virtualenv
virtualenv ~/mypython
Virtualenv erwartet als Parameter den Pfad zur neuen Python-Umgebung. Beim Aufruf wird der Python-Interpreter und einige Basis-Programme und Librarys von Python in das angegebene Verzeichnis übertragen.
Möchte ich diese Installation anstatt jener in $HOME/.local/ nutzen, muss ich entsprechend der o.g. Anleitung die PATH-Umgebungsvariable anpassen.
noch ein kleiner Tip...
Ein Python-Script beginnt so wie viele andere Scripte unter Unix auch mit der Angabe des Interpreters. Meistens steht dort #!/usr/bin/python in der ersten Zeile und das Script wird mit dem angegebenen Interpreter ausgeführt.
Trägt man statt dessen in den Scripten
#!/usr/bin/env python
ein, sucht das Programm env nach einem Interpreter mit dem Namen python in den Verzeichnissen, die in $PATH angegeben sind. Welcher Interpreter verwendet wird, hängt jetzt also von der Reihenfolge der Verzeichnisse in $PATH ab. Dies funktioniert nach gleichem Prinzip im Übrigen auch mit perl, php...
Happy coding.