Virtuella python-environments med virtualenv

En av fördelarna att programmera i python är den förträffliga pakethanteraren pip som både är snabb och smart. Däremot löser den inte problemen som ofta uppstår när man jobbar med flera projekt samtidigt; t.ex kanske jag behöver en version av PIL i det ena projektet men en annan version av PIL i ett annat projekt.

Många löser detta med att sätta upp en virtuell maskin med t.ex https://www.virtualbox.org/ per projekt men det blir snabbt mycket data med flera virtuella maskiner och aningen struligt att arbeta med.

http://pypi.python.org/pypi/virtualenv är en annan, enklare, lösning som fungerar ungefär såhär:
$ virtualenv test
Din python-installation kopieras in till katalogen ”test”, inklusive alla python-paket du har installerat (vill man inte det kan man lägga till flaggan –no-site-packages till virtualenv). Du kan sedan enkelt aktivera din nya python-installation genom att skriva:
$ source /path/to/env/test/bin/activate
Nu kan du installera paket med pip/easy_install direkt in i din ”virtuella” python-installation utan att röra din ”riktiga” python-installation. Sedan kan du antingen använda dig av source-metoden ovan eller bara skriva:
$ /path/to/env/test/bin/python /path/to/ditt_script.py
För att köra t.ex ditt_script.py med din ”virtuella” python-installation. Kör man t.ex https://www.djangoproject.com/ kanske man kör med apache med wsgi och då kan man lätt aktivera sitt virtualenv genom att lägga till sitt site-packages till WSGIPythonPath, t.ex:
WSGIPythonPath /path/to/env/test/lib/pythonX.X/site-packages