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
|djangoversion| gestartet werden.
Solche Probleme kann :program:`virtualenv` lösen.
:program:`virtualenv` kann für jedes Projekt einen "Container" erstellen, der
die installierten Pakete von der Basisinstallation abkapselt.
Außerdem kann :program:`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 :program:`virtualenv` auch im Produktivbetrieb auf dem
Server einsetzen. Man kann dort also die gleiche Umgebung nutzen wie schon
während der Entwicklung.
Installation
============
:program:`virtualenv` wird mit Hilfe von :program:`pip` installiert:
.. code-block:: bash
$ pip install virtualenv
.. note::
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:
.. code-block:: bash
$ mkdir .virtualenvs
Einfacher Arbeiten mit virtualenvwrapper
========================================
Um die Arbeit mit :program:`virtualenv` zu vereinfachen kann man unter Linux
oder Mac OS X das Paket :program:`virtualenvwrapper` installieren:
.. code-block:: bash
$ pip install virtualenvwrapper
Nach der Installation werden die folgenden beiden Zeilen in die Datei
:file:`.bashrc` oder :file:`.profile` eingefügt:
.. code-block:: bash
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
Dadurch "weiss" :program:`virtualenvwrapper` wo sich alle virtuellen
Arbeitsumgebungen befinden. Das Skript :file:`virtualenvwrapper.sh` lädt die
Shell-Befehle, mit denen wir arbeiten werden.
Nach dem Bearbeiten von :file:`.bashrc` oder :file:`.profile` muss die
Konfiguration noch einmal neu geladen werden. Dabei legt
:program:`virtualenvwrapper` die nötigen Skripte an:
.. code-block:: bash
$ 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
Weiterführende Links
====================
* `virtualenv Dokumentation `_
* `virtualenvwrapper Homepage `_