Environnements virtuels

Un environnement virtuel est un outil pour garder les dépendances requises par différents projets dans des emplacements séparés, en créant des environnements virtuels Python pour eux. Il résout le dilemme “le projet X dépend de la version 1.x mais le projet Y nécessite la 4.x”, et garde votre répertoire site-packages global propre et gérable.

Par exemple, vous pouvez travailler sur un projet qui nécessite Django 1.3 tout en maintenant aussi un projet qui nécessite Django 1.0.

virtualenv

virtualenv est un outil pour créer des environnements virtuels Python isolés. virtualenv crée un dossier qui contient tous les exécutables nécessaires pour utiliser les paquets qu’un projet Python pourrait nécessiter.

Installez virtualenv via pip:

$ pip install virtualenv

Usage basique

  1. Créer un environnement virtuel pour un projet:

$ cd my_project_folder
$ virtualenv venv

virtualenv venv` créera un dossier dans le répertoire courant qui contiendra les fichiers exécutables Python, et une copie de la bibliothèque ``pip que vous pouvez utiliser pour installer d’autres paquets. Le nom de l’environnement virtuel (dans ce cas, c’était venv) peut être n’importe quoi. Omettre le nom placera les fichiers dans le répertoire courant à la place.

Cela crée une copie de Python selon le répertoire où vous avez exécuté la commande, en le plaçant dans un dossier nommé venv.

Vous pouvez utiliser un interpréteur Python de votre choix.

$ virtualenv -p /usr/bin/python2.7 venv

Cela utilisera l’interpréteur Python dans /usr/bin/python2.7

  1. Pour commencer à utiliser l’environnement virtuel, il doit être activé:

$ source venv/bin/activate

Le nom de l’environnement virtuel actuel apparaît maintenant sur la gauche de l’invite (c’est à dire (venv)Votre-Ordinateur:votre projet VotreNomUtilisateur$) pour vous indiquer qu’il est actif. A partir de maintenant, tous les paquets que vous installez en utilisant pip seront placés dans le dossier venv, isolés de l’installation globale de Python.

Installez les paquets comme d’habitude, par exemple:

$ pip install requests
  1. Si vous avez terminé de travailler dans l’environnement virtuel pour le moment, vous pouvez le désactiver:

$ deactivate

Cela vous fait revenir à l’interpréteur par défaut Python du système, avec toutes ses bibliothèques installées.

Pour supprimer une environnement virtuel, supprimez juste son dossier. (Dans ce cas, ce serait rm -rf venv.)

Après un certain temps, cependant, vous pourriez vous retrouver avec un grand nombre d’environnements virtuels un peu partout dans votre système, et il est possible que vous oubliez leurs noms ou où ils ont été placés.

Autres notes

Exécuter virtualenv avec l’option --no-site-packages n’inclura pas les paquets qui sont installés globalement. Cela peut être utile pour garder la liste des paquets propre dans le cas où il est nécessaire d’y accéder plus tard. [Ceci est le comportement par défaut de virtualenv 1.7 et supérieur.]

Afin de garder votre environnement cohérent, c’est une bonne idée de “geler” l’état actuel des paquets de l’environnement. Pour ce faire, exécutez

$ pip freeze > requirements.txt

Cela va créer un fichier requirements.txt, qui contient une liste simple de tous les paquets qui sont dans l’environnement actuel, et leurs versions respectives.Vous pouvez voir la liste des paquets installés sans le format requirements en utilisant “pip list”. Plus tard, il sera plus facile pour un développeur différent (ou vous, si vous avez besoin de recréer l’environnement) d’installer les paquets en utilisant les mêmes versions:

$ pip install -r requirements.txt

Cela peut aider à assurer la cohérence entre installations, entre déploiements et entre développeurs.

Enfin, rappelez-vous d’exclure le dossier de l’environnement virtuel du gestionnaire de version en l’ajoutant à la liste des fichiers ignorés.

virtualenvwrapper

virtualenvwrapper fournit un jeu de commandes qui permet le travail avec des environnements virtuels beaucoup plus agréable. Il place également tous vos environnements virtuels dans un seul endroit.

Pour installer (assurez-vous que virtualenv est déjà installé):

$ pip install virtualenvwrapper
$ export WORKON_HOME=~/Envs
$ source /usr/local/bin/virtualenvwrapper.sh

(Instructions d’installation virtualenvwrapper complètes.)

Pour Windows, vous pouvez utiliser le virtualenvwrapper-win.

Pour installer (assurez-vous que virtualenv est déjà installé):

$ pip install virtualenvwrapper-win

Sous Windows, le chemin par défaut pour WORKON_HOME est %USERPROFILE%Envs

Usage basique

  1. Créez un environnement virtuel:

$ mkvirtualenv venv

Cela créé un dossier venv dans ~/Envs.

  1. Travailler sur un environnement virtuel:

$ workon venv

Alternativement, vous pouvez faire un projet, ce qui crée un environnement virtuel, et aussi un répertoire de projet à l’intérieur de $PROJECT_HOME, dans lequel vous êtes automatiquement placé via cd quand vous lancez workon myproject.

$ mkproject myproject

virtualenvwrapper fournit une auto-complétion à la tabulation sur les noms d’environnement. Il aide vraiment quand vous avez beaucoup d’environnements et avez du mal vous souvenir de leurs noms.

workon désactive aussi n’importe quel des environnements où vous êtes actuellement, de sorte que vous pouvez rapidement basculer entre les environnements.

  1. La désactivation est toujours la même:

$ deactivate
  1. Pour supprimer:

$ rmvirtualenv venv

Autres commandes utiles

lsvirtualenv

Lister tous les environnements

cdvirtualenv

Naviguez dans le répertoire de l’environnement virtuel actuellement activé, de sorte que vous pouvez parcourir son site-packages, par exemple.

cdsitepackages

Come ci-dessus, mais directement dans le répertoire site-packages.

lssitepackages

Montre le contenu du répertoire site-packages.

Liste complète des commandes de virtualenvwrapper <http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html>`_.

virtualenv-burrito

Avec virtualenv-burrito, vous pouvez avoir un environnement de travail virtualenv + virtualenvwrapper en une seule commande.

autoenv

Quand vous faites un cd dans un répertoire contenant un .env, autoenv active l’environment automatiquement, par magie .

Installez-le sous Mac OS X en utilisant brew:

$ brew install autoenv

Et sous Linux:

$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc