Python Language Créer et utiliser un environnement virtuel


Exemple

virtualenv est un outil permettant de créer des environnements Python isolés. Ce programme crée un dossier contenant tous les exécutables nécessaires pour utiliser les packages dont un projet Python aurait besoin.

Installation de l'outil virtualenv

Ceci n'est nécessaire qu'une fois. Le programme virtualenv peut être disponible via votre distribution. Sur les distributions de type Debian, le paquet s'appelle python-virtualenv ou python3-virtualenv .

Vous pouvez également installer virtualenv utilisant pip :

$ pip install virtualenv

Créer un nouvel environnement virtuel

Cela n'est nécessaire qu'une fois par projet. Lors du démarrage d'un projet pour lequel vous souhaitez isoler des dépendances, vous pouvez configurer un nouvel environnement virtuel pour ce projet:

$ virtualenv foo

Cela va créer un foo dossier contenant des scripts d'outillage et une copie du python binaire lui - même. Le nom du dossier n'est pas pertinent. Une fois l'environnement virtuel créé, il est autonome et ne nécessite aucune manipulation supplémentaire avec l'outil virtualenv . Vous pouvez maintenant commencer à utiliser l'environnement virtuel.

Activer un environnement virtuel existant

Pour activer un environnement virtuel, un shell magique est requis afin que votre Python soit celui de foo au lieu du système. C'est le but du fichier d' activate , que vous devez rechercher dans votre shell actuel:

$ source foo/bin/activate

Les utilisateurs Windows doivent taper:

$ foo\Scripts\activate.bat

Une fois qu'un environnement virtuel a été activé, les fichiers binaires python et pip et tous les scripts installés par des modules tiers sont ceux de foo . En particulier, tous les modules installés avec pip seront déployés dans l'environnement virtuel, ce qui permettra un environnement de développement contenu. L'activation de l'environnement virtuel doit également ajouter un préfixe à votre invite, comme indiqué dans les commandes suivantes.

# Installs 'requests' to foo only, not globally
(foo)$ pip install requests

Enregistrement et restauration des dépendances

Pour enregistrer les modules que vous avez installés via pip , vous pouvez répertorier tous ces modules (et les versions correspondantes) dans un fichier texte en utilisant la commande freeze . Cela permet aux autres d’installer rapidement les modules Python nécessaires à l’application en utilisant la commande install. Le nom conventionnel d'un tel fichier est requirements.txt :

(foo)$ pip freeze > requirements.txt
(foo)$ pip install -r requirements.txt

Veuillez noter que freeze répertorie tous les modules, y compris les dépendances transitives requises par les modules de niveau supérieur que vous avez installés manuellement. En tant que tel, vous pouvez préférer créer le fichier requirements.txt à la main , en ne mettant que les modules de premier niveau dont vous avez besoin.

Quitter un environnement virtuel

Si vous avez fini de travailler dans l'environnement virtuel, vous pouvez le désactiver pour revenir à votre shell normal:

(foo)$ deactivate

Utilisation d'un environnement virtuel dans un hôte partagé

Parfois, il n'est pas possible de $ source bin/activate un virtualenv, par exemple si vous utilisez mod_wsgi dans un hôte partagé ou si vous n'avez pas accès à un système de fichiers, comme dans Amazon API Gateway ou Google AppEngine. Dans ces cas, vous pouvez déployer les bibliothèques que vous avez installées dans votre virtualenv local et patcher votre sys.path .

Heureusement virtualenv est livré avec un script qui met à jour votre sys.path et votre sys.prefix

import os

mydir = os.path.dirname(os.path.realpath(__file__))
activate_this = mydir + '/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

Vous devriez ajouter ces lignes au tout début du fichier que votre serveur exécutera.

Cela trouvera le bin/activate_this.py que virtualenv créé le fichier dans le même répertoire que vous exécutez et ajoute vos lib/python2.7/site-packages à sys.path

Si vous souhaitez utiliser le script activate_this.py , n'oubliez pas de déployer au moins les répertoires bin et lib/python2.7/site-packages et leur contenu.

Python 3.x 3.3

Environnements virtuels intégrés

A partir de Python 3.3, le module venv créera des environnements virtuels. La commande pyvenv n'a pas besoin d'être installée séparément:

$ pyvenv foo
$ source foo/bin/activate

ou

$ python3 -m venv foo
$ source foo/bin/activate