Virtualenv possède ce qu’on appelle des hooks, c’est à dire des scripts qui sont appelés automatiquement quand un événement se produit.
Tous les scripts se trouvent dans le dossier ‘bin’ de l’environnement virtuel.
On y trouve:
- activate: appelé quand vous activez l’env
- postactivate: appelé après l’activation de l’env
- postdeactivate: appelé après la désactivation de l’env
- preactivate: appelé avant d’activer l’env
- predeactivate: appelé avant la désactivation de l’env
Ce sont des scripts bash vides, il suffit de les remplir avec ce qu’on veut qu’il arrive : lancer un service, logger dans un dossier, setter une variable…
Par exemple, j’ai un fichier de settings django qui n’est pas détecté automatiquement par ./manage.py, du coup je met ce code dans “~/.virtualenv/monenv/postactivate” :
echo 'Set DJANGO_SETTINGS_MODULE="settings.unsettingsparticulier"' export DJANGO_SETTINGS_MODULE="settings.unsettingsparticulier" |
Ça me set ma variable d’environnement et du coup ./manage.py trouve mon fichier de settings.
Typo:
Corrigé, merci !
Il devrait y avoir une boîte de dialogue de confirmation pour les copier-coller : “Vous allez forcément oublier de modifier un truc. Voulez-vous continuer quand même ? NON / ANNULER”
Petite précision : ce n’est pas virtualenv qui propose ces hooks, mais excellent virtualenvwrapper : http://virtualenvwrapper.readthedocs.org/en/latest/scripts.html