Notes et transcriptions du cours “Mettez en place votre environnement Python” disponible sur la plateforme Openclassrooms.
Nous avons créé ensemble deux projets, et un environnement virtuel pour chacun d’eux. Dans chaque environnement virtuel, nous avons installé un ou deux paquets Python. Nous pouvons afficher les paquets que nous avons installés dans notre environnement virtuel à l'aide de la commande pip freeze
, pendant que l'environnement est actif.
Que se passe-t-il, toutefois, si nous voulons qu'un autre développeur travaille sur nos projets ? Comment saura-t-il quels paquets installer dans son environnement virtuel ?
Pour garantir que tous les développeurs travaillant sur un projet utilisent le même environnement virtuel, nous utilisons un fichier requirements.txt
. Il s'agit de la liste des paquets Python dont l'installation est requise dans un environnement virtuel pour que l'application s'exécute correctement.
Voici un exemple de fichier requirements.txt
:
matplotlib numpy requests
Si le fichier requirements.txt
ci-dessus est stocké dans un projet, il indique à tout nouvel utilisateur : ”pour commencer à travailler sur ce projet, créez et activez un environnement virtuel, puis installez ces paquets”. Ainsi, le développeur peut commencer à travailler immédiatement sur le projet, en étant sûr d'avoir le même environnement de développement local que les autres développeurs du projet.
Vous avez peut-être déjà constaté que, dans cet exemple, les versions des paquets ne sont pas indiquées. Il est préférable de spécifier une version exacte ou une plage de versions de paquets dans votre fichier requirements.txt . Voici un autre exemple :
matplotlib==3.2.2 numpy>1.12 requests>2.0,<3.0
Ci-dessus on indique la version exacte à utiliser pour matplotlib
, et une plage de versions utilisables pour numpy
et requests
.
Selon les divers cas possibles dans le développement de logiciels, vous avez plusieurs options :
La différence entre ces scénarios dépasse le cadre de ce cours. Nous allons donc utiliser l'option 2 pour le reste de ce chapitre !
Revenons au projet demo-app-2
sur lequel nous avons travaillé plus tôt. D'abord, placez-vous dans le répertoire demo-app-2:
cd ~/projects/demo-app-2
L'exécution de ls doit montrer que vous avez un fichier appelé demo.py , et un dossier d'environnement virtuel appelé env :
ls demo.py env
Comme auparavant, nous pouvons exécuter notre démonstration en activant l'environnement virtuel et en utilisant Python pour exécuter l'application :
source env/bin/activate python demo.py
Comme auparavant, le résultat généré est un graphique
Maintenant, nous voulons créer et stocker un fichier requirements.txt
afin de pouvoir partager notre projet (et la spécification de l'environnement virtuel) avec d'autres développeurs. Il existe deux méthodes pour ce faire.
Jusqu'à présent, nous avons seulement installé matplotlib
et numpy
dans notre environnement virtuel. Nous pouvons donc créer manuellement un fichier requirements.txt
contenant juste ces deux paquets. D'abord, vérifiez la version des paquets que vous avez installés, en exécutant pip freeze
.
pip freeze cycler==0.10.0 kiwisolver==1.2.0 matplotlib==3.2.2 numpy==1.19.0 pyparsing==2.4.7 python-dateutil==2.8.1 six==1.15.0
Vous pouvez remarquer, à ce stade, que d'autres paquets sont répertoriés avec matplotlib
et numpy
. Il s'agit des dépendances de matplotlib
et numpy
, et nous n'avons pas besoin de les répertorier de manière explicite dans notre fichier requirements.txt
.
Maintenant, nous sommes prêts. Créez un fichier requirements.txt
et ajoutez les éléments suivants :
matplotlib==3.2.2 numpy==1.19.0
Grâce à ce fichier requirements.txt, si vous devez partager le projet demo-app-2 avec un autre développeur, celui-ci pourra créer un environnement virtuel et exécuter l'application correctement.
L'autre option pour créer un fichier requirements.txt
consiste à rediriger la sortie de la commande pip freeze
. Par exemple, nous pouvons exécuter :
pip freeze > requirements.txt
Cette commande met le contenu de pip freeze dans le fichier requirements.txt
. Jetons un œil à l'intérieur du fichier qui vient d'être créé via la commande cat requirements.txt
:
La commande produit la sortie:
cycler==0.10.0 kiwisolver==1.2.0 matplotlib==3.2.2 numpy==1.19.0 pyparsing==2.4.7 python-dateutil==2.8.1 six==1.15.0
À ce stade, vous remarquerez que le fichier requirements.txt
répertorie tout le résultat de pip freeze
, et pas seulement les paquets que vous installés explicitement : numpy
et matplotlib
. En effet, leurs dépendances ont aussi été ajoutées. C'est une autre manière, plus explicite, d'écrire un fichier requirements.txt
.
Imaginez maintenant que vous récupériez le projet d'un autre développeur. Le projet possède déjà un fichier requirements.txt
que vous pouvez utiliser pour installer des paquets dans votre environnement virtuel. Dans l'idéal, il devrait aussi posséder une documentation !
Considérons un projet demo-app-3
contenant un script deo.py et un fichier requirements.txt.
import requests from bs4 import BeautifulSoup r = requests.get('http://www.example.com') soup = BeautifulSoup(r.text, features="html.parser") print(soup.text)
beautifulsoup4==4.9.1 requests==2.24.0
Notez que dans demo.py
, nous utilisons deux paquets : requests
et bs4
. Ces deux paquets, ainsi que leurs versions, sont répertoriés de manière explicite dans requirements.txt
. À ce stade, vous pouvez essayer d'exécuter demo.py
à l'aide de Python. Si requests
et bs4
sont installés globalement (dans l'idéal, ce n'est pas le cas), le script s'exécutera correctement. Toutefois, même dans ce cas, vous ne pouvez pas savoir si le script s'exécute exactement de la façon prévue par l'auteur du projet, car vous utilisez peut-être des versions de requests
et bs4
différentes de celles spécifiées dans requirements.txt
.
Pour garantir que vous avez la même configuration que les autres développeurs qui travaillent sur le projet, nous utilisons un environnement virtuel. D'abord, créez et activez un environnement virtuel :
# Creation de l'environnement virtuel Python python3 -m venv env # Activation de l'environnement virtuel 'env' source env/bin/activate
Ensuite, nous devons installer les paquets Python répertoriés dans le fichier requirements.txt
. Pour ce faire, nous utilisons la commande suivante :
pip install -r requirements.txt
Maintenant, quand vous exécutez pip freeze
, vous constatez que vous avez correctement installé requests
et bs4
, ainsi que leurs dépendances. Vous pouvez enfin exécuter le script demo.py
correctement.
python3 ./demo.py
Vous avez réussi à créer un environnement virtuel et à installer les paquets répertoriés dans un fichier requirements.txt
. Félicitations !
requirements.txt
lorsque vous utilisez un environnement virtuel pour un projet.requirements.txt
, demandez pourquoi à l'auteur. Il n'est pas impoli de poser la question, et il existe peut-être une raison parfaitement valable !