Photo by Balk Nick on Unsplash

Variables d'environnement avec virtualenvwrapper sous Windows

Tout d'abord, commençons par quelques petits rappels.

La notion d'environnement virtuel (ou virtualenv en anglais) n'est pas nouvelle en Python. Elle permet de créer facilement et rapidement un environnement de développement isolé pour un projet. Ainsi, sur une même machine, plusieurs versions différentes d'une librairie peuvent être installées et cohabiter sans problème.

À cela, virtualenvwrapper rajoute la centralisation de ces environnements. Ils sont, par défaut, stockés dans le home du l'utilisateur, dans un dossier Envs.

En suivant le tutoriel Django TaskBuster de Marina Mele, j'en suis arrivé à la partie II - Setting files and version control. Certains paramètres critiques de l'application sont ainsi sortis du code source. Ceci offre la possibilité de partager et diffuser le code sans y laisser des secrets. D'autre part, en utilisant des environnements virtuels différents pour le développement et les tests, cela permet aussi d'avoir des valeurs différentes pour ces paramètres. Mais comment les mettre en place (et aussi les supprimer) dès que l'on active (ou désactive) un environnement virtuel ?

Sous Linux, il faut écrire dans les scripts postactivate et predeactivate de l'environnement virtuel. Sous Windows, c'est un peu différent. Les lignes doivent être ajoutées dans le fichier activate.bat (dossier Scripts/ de l'environnement virtuel).

set DJANGO_SETTINGS_MODULE=myproject.settings.development
set SECRET_KEY="abc123def456"

Dans l'exemple ci-dessus, à l'activation de l'environnement virtuel, deux variables d'environnement sont établies. La première sert à préciser l'emplacement du fichier de paramètres, la seconde pour créer une clé secrète Django.

Cependant, une fois l'environnement désactivé, les variables conservent leurs valeures sur notre machine Windows. Ce n'est pas idéal. Pour remédier à cela, il faut ajouter du contenu dans le fichier deactivate.bat :

set DJANGO_SETTINGS_MODULE=
set SECRET_KEY=

L'affectation sans valeur, en batch, réinitialise la valeur associée à une variable. Et le tour est joué !

{{ message }}

{{ 'Comments are closed.' | trans }}