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 !
Houston... ?
Vous n'êtes pas connecté
Connectez-vous pour accéder aux exercices de codes et testez vos nouvelles compétences.