Notes à propos de virtualenvwrapper avec MacPorts

Ce billet date de plusieurs années, ses informations peuvent être devenues obsolètes.

De temps en temps je peste contre MacPorts mais il faut dire qu'il me rend quand même bien service. Le port python_select par exemple permet de switcher facilement d'une version à l'autre de l'interpréteur Python.

Mais il y a encore plus pratique que ça : virtualenv. Voir A Primer on Virtualenv et Working with virtualenv. Virtualenv permet de créer des environnements isolés pour Python dans lesquels il est possible d'installer des paquets Python sans venir polluer le répertoire site-packages de la version active de Python sur votre système. Très utile pour par exemple créer très rapidement un nouvel environnement de test, pour jouer avec une nouvelle beta de Django, pour essayer la nouvelle version d'une dépendance, ou pour passer à une autre version de Python.

Et pour être encore plus à l'aise avec virtualenv il y a virtualenvwrapper. Il s'agit d'un ensemble de scripts bash qui facilitent l'utilisation de virtualenv lorsqu'on a besoin d'une multitude d'environnements différents.

Après avoir installé virtualenv, il faut installer virtualenvwrapper :

sudo pip install virtualenvwrapper

Ensuite il faudra suivre les indications du Quick Setup, et lui donner le bon chemin du fichier des scripts en fonction de l'interpréteur Python actif si vous en avez plusieurs.

  1. cd
  2. mkdir .virtualenvs
  3. # mate .bash_profile
    export WORKON_HOME=$HOME/.virtualenvs
    source /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper_bashrc

Ensuite c'est parti pour la teuf :

  • mkvirtualenv
  • rmvirtualenv
  • workon
  • cdvirtualenv
  • cdsitepackages
  • deactivate
  • etc.

En ce qui me concerne je commence à prendre l'habitude d'utiliser l'option --no-site-packages systématiquement et d'utiliser un fichier de requirements pour pip (pip freeze > ~/project_path/stable-requirements.txt).

Il est possible de passer l'exécutable Python en argument de la commande mkvirtualenv :

mkvirtualenv virtualenv_name
mkvirtualenv virtualenv_name --no-site-packages
mkvirtualenv virtualenv_name --python=/opt/local/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python --no-site-packages

Après la création d'un nouvel environnement il suffit de le sélectionner, d'installer pip et les dépendances associées à votre projet :

workon virtualenv_name
cdvirtualenv
python bin/easy_install pip
pip install -r ~/project_path/stable-requirements.txt

Je bosse pas mal avec MySQL et j'ai eu quelques galères pour installer MySQL-python puisque j'utilise le port mysql5. En fait à la compilation MySQL-python cherche mysql_config mais celui que vous devez utiliser si vous vous servez de mysql5 via MacPorts c'est mysql_config5. Pour régler ça, assurez-vous que votre $PATH contient /opt/local/bin et créez un symlink :

sudo ln -s /opt/local/bin/mysql_config5 /opt/local/bin/mysql_config

Ensuite un which mysql_config devrait vous indiquer le path correct (/opt/local/bin/mysql_config) et l'installation de MySQL-python se passera sans soucis \o/

Avant HTML5 et video : H.264 VS Theora Round 2 Après Dégradés CSS 3 dans WebKit et Gecko

Tag Kemar Joint