virtualenv Virtuelenv ist ein Werkzeug um eine isolierte Python-Umgebungen zu erstellen. In dieser Umgebung kann man dann Python Module z.B. mit Easy Install installieren, ohne das die globale Umgebung verändert wird. Das ist insbesondere dann interessant, wenn man bestimmte Versionen eines Moduls benötigt.

Vorbereitung

Um virtualenv nutzten zu können, muß man es erst mal installieren. Man kann dazu easy install nutzten:

virtualenv via easy install installieren

Wenn man easy install selber noch nicht installiert hat, kann man dies über ez_setup.py erledigen:

wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py

virtualenv via easy_install installieren:

sudo easy_install virtualenv

virtualenv via Paketverwaltung installieren

Eine andere Möglichkeit wäre die Paketverwaltung der Distribution zu nutzten, z.B.:

sudo aptitude install python-virtualenv

virtualenv erstellen

Das erstellen einer virtuellen Python Umgebung ist recht einfach. In dem Falle erstellen wir im Home Verzeichnis mein_env

~$ virtualenv mein_env

Wichtig 1: Das umbenennen/verschieben einer erstellten Umgebung ist nicht so ohne weiteres möglich, weil teilweise absolute Pfade genutzt werden. Also gut überlegen wo und wie es heißen soll ;) Ansonsten, hier steht wie es dennoch geht: Making Environments Relocatable

Wichtig 2: Nachdem man eine virtuellen Python Umgebung erstellt hat, werden neu installierte Module in der globalen Python Umgebung nicht mehr in der virtuellen sichtbar! Hat man also z.B. vergessen MySQLdb zu installieren und holt dieses mit der Paketverwaltung der Distribution nach, fehlt das Modul weiterhin in der virtuellen Umgebung. Ist aber nicht weiter schlimm, man kann ja Easy Install in der virtuellen Umgebung nutzten. (s. unten)

Die --no-site-packages Option

Per Default werden alle Module aus der globalen Python Umgebung mit in der virtuellen Python Umgebung eingebunden (siehe auch Wichtig 2). Möchte man dass nicht, weil man z.B. mehr Unabhängigkeit von der Globalen Umgebung möchte oder auf diese keinen Einfluss hat, kann man eine virtuelle Umgebung mit der --no-site-packages Option erstellen:

~$ virtualenv --no-site-packages mein_env

Dadurch muss man alle benötigten Module nachträglich in die virtuelle Umgebung installieren (siehe nächsten Absatz).

module in virtuelenv installieren

Hat man eine virtuellen Python Umgebung erstellt, kann man in dieser Module installieren. Wichtige Tools dazu findet sich im bin Verzeichnis.

Zunächst aktivieren wir die Umgebung mit:

~$ cd mein_env
~/mein_env$ source bin/activate
(mein_env)~/mein_env$

Nach dem aktivieren sieht man (mein_env) im Prompt. So kann man feststellen, das man sich auch in der richtigen Umgebung befindet ;)

Danach kann man mit pip und/oder easy_install arbeiten.

easy_install nutzten

Im bin Verzeichnis liegt die ausführbare easy_install Datei. So installiert man Bespielsweise pip:

(mein_env)~/mein_env/bin$ easy_install pip

Source Pakete mit pip einbinden

Interessant für Entwickler ist es externe Repositories (SVN, Git, Mercurial und Bazaar) mittels pip einzubinden.

Als erstes muß man dazu pip installieren (s. oben)

Hier ein Beispiel mit dem Django SVN trunk:

(mein_env)~/mein_env/bin$ pip install --verbose --editable=svn+http://code.djangoproject.com/svn/django/trunk/#egg=django

Der Django trunk findet man dann unter ~/mein_env/src/django/

Source Pakete aktualisieren

Die source Pakete kann man z.B. mit svn update aktualisieren. Allerdings behält das Modul die alte Versionsnummer, weil diese seperat im Verzeichnis ...egg-info gespeichert wird.

Ein richtiges upgrade get mit pip mit dem Parameter --upgrade, z.b.:

(mein_env)~/mein_env/bin$ pip install --upgrade --verbose --editable=svn+http://code.djangoproject.com/svn/django/trunk/#egg=django

Tags: Tipps

virtualenv (zuletzt geändert am 2010-11-29 11:34:15 durch anonym)