• 4 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 5/2/18

Travaillez dans un environnement virtuel

Log in or subscribe for free to enjoy all this course has to offer!

Vous utiliserez plusieurs librairies dans ce cours : Numpy, Scipy... Peut-être avez-vous déjà travaillé avec ces librairies ?

Si c'est votre première fois, il vous faudra les installer. Par défaut, vous les installerez dans votre ordinateur. Mais lorsque vous aurez développé plusieurs projets vous aurez peut-être la désagréable surprise de constater des erreurs dues à des versions différentes.

Imaginons que vous travailliez avec la version 1.0 de Librairie1 dans un projet X. Six mois plus tard, vous avez de nouveau besoin de cette librairie mais la version a changé, il s'agit désormais de la 1.1. Vous installez donc la nouvelle version qui, elle-même, dépend d'autres modules ! Très vite, un château de cartes instable s'installe dans votre ordinateur.

L'idéal, me direz-vous, serait de pouvoir isoler les librairies installées par projet. Ou même mieux : de pouvoir décider quel environnement de développement nous souhaitons utiliser.

C'est exactement l'objectif des environnements virtuels : créer un environnement comprenant une certaine version de Python et les librairies que vous souhaitez. Si votre ordinateur était un immeuble, nous pourrions imaginer qu'un environnement virtuel serait une pièce de cet immeuble dans laquelle vous installez ce que vous souhaitez. Lorsque vous entrez dans la pièce, les librairies installées sont accessibles. Mais lorsque vous la quittez, plus rien n'existe !

Utiliser Virtualenv

Il existe plusieurs solutions d'environnement virtuel. Dans notre cas nous allons utiliser VirtualEnv

Installation

Commencez donc par installer VirtualEnv :

pip install virtualenv

Puis déplacez-vous dans votre dossier de travail.

Créer et activer un environnement virtuel

Concrètement, comment fonctionne un environnement virtuel ?

Commencez par créer un environnement virtuel en lançant la commande suivante :

virtualenv -p python3 env

 

Elle crée un dossier env utilisant Python3 dans le répertoire courant.

Pour activer l'environnement, écrivez la commande suivante :

source env/bin/activate

 

Vous constatez alors que l'environnement virtuel est indiqué entre parenthèses sur la gauche de votre console.

À partir de maintenant, l'interpréteur Python utilisé n'est plus celui de votre système mais bien celui de l'environnement virtuel. Vous pouvez le voir très facilement en utilisant la commande which   (UNIX) ou  where (Windows) qui affiche le chemin vers l'exécutable :

$ which python                                                   
/chemin/vers/votre/projet/env/bin/python

Les packages installés sont également différents :

$ pip freeze
appdirs==1.4.3
astroid==1.5.2
cycler==0.10.0
isort==4.2.5
lazy-object-proxy==1.3.1
matplotlib==2.0.2
mccabe==0.6.1
numpy==1.12.1
packaging==16.8
pandas==0.20.1
pylint==1.7.1
pyparsing==2.2.0
python-dateutil==2.6.0
pytz==2017.2
scipy==0.19.0
seaborn==0.7.1
six==1.10.0
wrapt==1.10.10

 Si vous ouvrez un autre terminal, vous constatez que l'environnement virtuel n'est pas activé :

$ which python                                                     
/usr/local/bin/python
$ pip freeze
Could not find an activated virtualenv (required).

Désactiver un environnement virtuel

Pour désactiver un environnement virtuel, tapez simplement deactivate.

Supprimer un environnement virtuel

Pour supprimer un environnement virtuel, rien de plus simple ! Commencez par le désactiver puis supprimez son répertoire. 

(env) $ deactivate
$ rm -rf env

Désactiver le suivi Git

Si vous utilisez Git (et j'espère bien que oui ! :) ), il faut impérativement désactiver le suivi de modifications de votre environnement virtuel. En effet, vous ne voulez pas envoyer sur Github tout votre environnement virtuel !

Pour cela, créez un fichier .gitignore et ajoutez à l'intérieur la ligne suivante :

env/

Elle indique à Git d'ignorer le dossier env.

Un fichier de dépendances

Imaginons a présent que le programme soit fini. Vous le publiez sur Github afin que toute personne intéressée puisse y accéder.

Comment ces dernières peuvent-elles connaître les différentes librairies utilisées dans le projet ? Elles n'auront pas accès à votre environnement virtuel. Bien sûr, elles peuvent regarder en haut des différents fichiers et chercher les imports. Mais cela est fastidieux et, surtout, il sera impossible de connaître les versions utilisées.

Afin de remédier à ce souci, il existe une convention : créer un fichier requirements.txt qui liste les différentes librairies utilisées ainsi que leur version. 

Créer un fichier de dépendances

Pypi peut le faire automatiquement pour vous ! Pour cela, exécutez la commande suivante.

pip freeze > requirements.txt

Voici ce qui a été généré :

requirements.txt

appdirs==1.4.3
packaging==16.8
pyparsing==2.2.0
six==1.10.0

Cette commande est très utile mais peut s'avérer restrictive. Pip indique en effet toutes les librairies utilisées, y compris des librairies fondamentales telles que packaging ou six que vous n'avez pas besoin d'installer. C'est pourquoi ce que nous préconisons est d'ajouter à la main les dépendances explicitement requises par un projet. 

requirements.txt

requests
pandas

Installer des dépendances

Si un fichier requirements.txt existe déjà, vous pouvez facilement en installer toutes les librairies en exécutant la commande suivante :

pip install -r requirements.txt

Parfait ! Nous avons vu dans ce chapitre comment utiliser un environnement virtuel et installer un fichier de dépendances. Dans le prochain chapitre nous commencerons l'analyse ! A tout de suite ! 

 

A vous de jouer !

Cliquez sur ce lien

 

Code du chapitre

Retrouvez le code de ce chapitre en cliquant ici. 

Example of certificate of achievement
Example of certificate of achievement