Virtualenv

Was ist virtualenv?

Wenn man beginnt an mehreren Projekten parallel zu arbeiten kommt irgendwann der Zeitpunkt, an den Kollisionen bei den installierten Paketen auftreten.

Ein altes Projekt benutzt zum Beispiel noch Django 1.2 und kann aus Zeitmangel nicht migriert werden. Gleichzeitig soll aber ein neues Projekt mit Django 1.4 gestartet werden.

Solche Probleme kann virtualenv lösen.

virtualenv kann für jedes Projekt einen “Container” erstellen, der die installierten Pakete von der Basisinstallation abkapselt.

Außerdem kann virtualenv jeder Umgebung eine bestimmte Python Version zuordnen. Man kann also ein virtuelle Arbeitsumgebung mit Python 2.5 erstellen, die nächste mit Python 2.6.

Außerdem lässt sich virtualenv auch im Produktivbetrieb auf dem Server einsetzen. Man kann dort also die gleiche Umgebung nutzen wie schon während der Entwicklung.

Installation

virtualenv wird mit Hilfe von pip installiert:

$ pip install virtualenv

Bemerkung

Unter Linux und Mac OS X werden evtl. root-Rechte für die Installation benötigt.

Nach der Installation sollte ein Verzeichnis für alle virtuellen Projekte anlegt werden, zum Beispiel im Home-Verzeichnis:

$ mkdir .virtualenvs

Einfacher Arbeiten mit virtualenvwrapper

Um die Arbeit mit virtualenv zu vereinfachen kann man unter Linux oder Mac OS X das Paket virtualenvwrapper installieren:

$ pip install virtualenvwrapper

Nach der Installation werden die folgenden beiden Zeilen in die Datei .bashrc oder .profile eingefügt:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

Dadurch “weiss” virtualenvwrapper wo sich alle virtuellen Arbeitsumgebungen befinden. Das Skript virtualenvwrapper.sh lädt die Shell-Befehle, mit denen wir arbeiten werden.

Nach dem Bearbeiten von .bashrc oder .profile muss die Konfiguration noch einmal neu geladen werden. Dabei legt virtualenvwrapper die nötigen Skripte an:

$ source .bashrc
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/initialize
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/get_env_details
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/postmkproject
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/prermproject
virtualenvwrapper.user_scripts creating /home/vagrant/.virtualenvs/postrmproject

Inhalt

Vorheriges Thema

Python

Nächstes Thema

Django

Diese Seite