beawolf - Fotolia

Probleme zwischen Python und Linux mit virtualenv lösen

Mithilfe von virtualenv können Sie unter Linux sowohl Python 2 als auch Python 3 benutzen und die beiden kommen sich dank virtueller Umgebungen in diesem Fall nicht in die Quere.

Ubuntu, Debian und andere Linux-Distributionen liefern per Standard immer noch Python 2 vorinstalliert aus, obwohl Python 3 schon ein Jahrzehnt auf dem Markt ist.

Python 3 wurde 2008 vorgestellt und die finale Version von Python 2, also 2.7, gibt es seit 2010. Python 2 wird noch bis 2020 gewartet und erreicht dann sein Lebensende. Das ist fünf Jahre später als eigentlich vorgesehen. Anwender von Python 2 haben argumentiert, dass sie den Zeitrahmen bis 2020 für entsprechende Upgrades brauchen.

Entwickler und System-Administratoren müssen Python und Linux zusammen verwenden und es gibt wie gesagt zwei Versionen. Die beste Lösung für IT-Abteilungen wäre es, wenn sie Version 2.x und 3.x gleichzeitig auf einem System laufen lassen könnten.

Python-Versionen

Python 2 und 3 sind fast gleich. Die bekannteste veraltete Funktion von Python 2 ist die Notwendigkeit, runde Klammern () um den print()-Ausdruck schreiben zu müssen. Weil sich die Entwicklung nun auf Python 3 konzentriert, verpassen Anwender, die an Python 2 festhalten, neue Pakete. Das Szenario ist aber niemals entweder/oder. Zum Beispiel ist das Cloud-Orchestrierungssystem OpenStack in Python geschrieben und kann mit beiden Versionen umgehen. Die Open-Source-Bibliothek für maschinelles Lernen TensorFlow ist ebenfalls für beide Versionen verfügbar.

Linux und Python bringen sich durch die beiden Versionen in chaotische Situationen. Um das zu beweisen, sehen wir uns an, wie ein neuer Ubuntu Server auf den nachfolgenden Befehl reagiert:

/usr/bin/python

Auf dem Ubuntu Server läuft Python 2. Ein Administrator kann Python 3 zusätzlich installieren und natürlich auch benutzen. Um auf einem Linux-System Python 3 laufen zu lassen, verwenden Sie immer python3 anstelle von python oder erstellen einen sogenannten Alias, der auf python3 zeigt. Ein Softlink ist auch möglich, damit der Anwender einfach python ausführen kann.

Installieren Anwender Python-Pakete, dann landen sie in zwei Ordnern. Es kommt darauf an, ob sie den Paketmanager pip2 oder pip3 nehmen:

/usr/lib/python3.4

/usr/lib/python2.7

Packen Sie unter Linux die falsche Version von Python in den falschen Ordner, dann endet das in einer nicht behebbaren Situation (Abbildung 1).

Eine nicht korrekte Installation von Python unter Linux führt zu einer unangenehmen Situation mit kaputten Paketen.
Abbildung 1: Eine nicht korrekte Installation von Python unter Linux führt zu einer unangenehmen Situation mit kaputten Paketen.

Ein Administrator könnte nun versuchen, die Pakete Depends on zu installieren, um damit die Situation zu reparieren. Aber das verschlimmert die Sachlage nur (Abbildung 2). Administratoren reparieren nicht erfüllte Abhängigkeiten normalerweise mit sudo apt-get install -f, aber die Methode funktioniert bei der Kombination Python und Linux meist nicht.

Das Problem von Linux und Python wird noch größer, selbst mit der Benutzung von Depends - wir drehen uns im Kreis.
Abbildung 2: Das Problem von Linux und Python wird noch größer, selbst mit der Benutzung von Depends - wir drehen uns im Kreis.

Um Probleme mit Python und Linux zu vermeiden, installieren Sie virtualenv. Es ist ein Isolations-Tool für Python-Umgebungen.

Virtualenv erstellt mehrere Python-Umgebungen für mehrere Benutzer. Sie installieren dabei die Binärdateien von Python 2 und Python 3 in den Zielordnern, die am besten die Home-Ordner des jeweiligen Nutzers sind. Danach installiert der Prozess die Python-Pakete unter (Zielordner)/lib. Systemweite Pakete lassen sich gemeinsam nutzen.

Virtualenv installieren

Als ersten Schritt installieren Sie virtualenv über den Befehl sudo apt-get install virtualenv. Sie können auch andere Methoden nutzen, um die Software zu installieren.

Installation von pip3:

sudo apt-get install python3-pip

Damit wird das Paket systemweit installiert. Virtualenv installiert ein weiteres pip3 im (Zielordner). Wechseln Sie in das Home-Verzeichnis und erstellen eine virtuelle Umgebung für python2. In unserem Fall ist das der (Zielordner):

cd virtualenv (Zielordner)

Sie nutzen die python2-Umgebung mithilfe dieser Befehle:

source (Zielordner)/bin/activate

Überprüfen Sie, dass das Linux-System Python aus dem (Zielordner)/bin/ ausführt und nicht das im System vorinstallierte Python benutzt:

which python

/home/(Ihre id)/(Zielordner)/bin/python

Die virtualenv-Umgebung für python3 einrichten:

virtualenv -p python3 (Zielordner)

Überprüfen Sie, ob pip3 installiert ist:

which pip3

/home/(Ihre id)/(Zielordner)/bin/pip3

Paket installieren und überprüfen, dass es in (Zielordner)/lib landet:

pip3 install requests

ls (target folder)/lib/python3.5/site-packages/requests

Zwischen den Python-Versionen wechseln

Befindet sich auf einem Server bereits Python 3, aber ein Programm oder eine Aufgabe verlangt Python 2, benutzen Sie diesen Befehl:

virtualenv --python=/usr/bin/python (Zielverzeichnis)

source (Zielverzeichnis)/bin/activate

python

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Erfahren Sie mehr über Data-Center-Betrieb

ComputerWeekly.de
Close