Créez un deuxième environnement virtuel pour une autre application
Au chapitre précédent, vous avez créé un environnement virtuel à utiliser avec un projet appelé demo-app
. Dans ce chapitre, vous créerez un autre projet (et un environnement virtuel associé), et vous apprendrez à passer rapidement d'un projet à l'autre en activant l'environnement virtuel associé.
Dans votre terminal, placez-vous dans le répertoire projects
et créez un projet appelé demo-app-2
:
$ cd projects/ $ mkdir demo-app-2
Vos deux projets devraient maintenant apparaître dans le répertoire «projets » :
$ ls demo-app demo-app-2
Passez dans le répertoire demo-app-2
et créez un script appelé demo.py
:
$ cd demo-app-2 $ touch demo.py
Écrivez le code Python dans demo.py
:
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
plt.plot([1, 2, 3, 4, 5], [10, 20, 30, 40, 50])
plt.show()
Comme pour le premier projet (demo-app
), si vous tentez d'exécuter le script, il pourra s'exécuter correctement ou échouer, selon que matplotlib
et numpy
sont installés ou pas parmi les paquets globaux. Si matplotlib
n'a pas été installé globalement, vous recevrez un message d'erreur semblable à celui-ci :
$ python demo.py Traceback (most recent call last): File "demo.py", line 1, in <module> import matplotlib.pyplot as plt ModuleNotFoundError: No module named 'matplotlib'
Aussi, si matplotlib
est installé globalement, mais que numpy
ne l'est pas, vous recevrez également un message d'erreur similaire.
Si matplotlib
et numpy
sont tous deux installés globalement, votre script s'exécutera correctement et affichera ce graphique :
Rappelons-nous qu’il ne faut installer que le strict minimum de paquets globaux, mais qu'il faut plutôt les installer dans l'environnement virtuel propre à chaque projet.
Créons un environnement virtuel pour demo-app-2
. Passez dans le répertoire demo-app-2
et créons un environnement virtuel que nous appellerons ici aussi env
:
$ python -m venv env
Activez l'environnement virtuel et vérifiez qu'aucun paquet n'est installé :
$ source env/bin/activate $ pip freeze
Installez maintenant matplotlib
pour que nous puissions exécuter notre script :
$ pip install matplotlib Collecter matplotlib Utilisation de https://files.pythonhosted.org/packages/0d/61/b741990b429341bac1af5f5c645ee7aaa3bbe7daf3418d283c92c4b5ee82/matplotlib-3.2.1-cp37-cp37m-macosx_10_9_hl Requirement already satisfied: kiwisolver>=1.0.1 in ./env/lib/python3.7/site-packages (from matplotlib) (1.2.0) Requirement already satisfied: cycler>=0.10 in ./env/lib/python3.7/site-packages (from matplotlib) (0.10.0) Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in ./env/lib/python3.7/site-packages (from matplotlib) (2.4.7) Requirement already satisfied: python-dateutil>=2.1 in ./env/lib/python3.7/site-packages (from matplotlib) (2.8.1) Requirement already satisfied: numpy>=1.11 in ./env/lib/python3.7/site-packages (from matplotlib) (1.18.4) Requirement already satisfied: six in ./env/lib/python3.7/site-packages (from cycler>=0.10->matplotlib) (1.15.0) Installing collected packages: matplotlib Successfully installed matplotlib-3.2.1
Si vous exécutez à nouveau le script, il doit fonctionner ! :magicien:
$ python demo.py
Félicitations, vous devriez maintenant avoir créé votre deuxième environnement virtuel, et exécuté une application qui l'utilise ! :D
Si vous rencontrez des difficultés, regardez cette vidéo :
Basculez entre plusieurs environnements virtuels
Imaginons maintenant que nous souhaitions basculer rapidement entre nos applications demo-app
et demo-app-2
. Pour l'instant, l'environnement virtuel de demo-app-2
est activé. Commençons par le désactiver :
(env) ~/projects/demo-app-2$ deactivate
~/projects/demo-app-2$
Passons maintenant dans le répertoire demo-app
et activons son environnement virtuel :
$ cd ../demo-app $ ls demo.py env $ source env/bin/activate
Maintenant, si vous exécutez pip freeze
, vous verrez les paquets que vous avez installés dans l'environnement virtuel de demo-app
:
$ pip freeze certifi==2020.4.5.1 chardet==3.0.4 idna==2.9 requests==2.23.0 urllib3==1.25.9
Par exemple, l'environnement virtuel de demo-app
est actuellement activé. Nous pouvons changer de répertoire en nous plaçant dans demo-app-2
, activer son environnement virtuel et exécuter le script comme nous le souhaitons. Aucune désactivation n'est requise !
(env) ~/projects/demo-app-$ cd ../demo-app-2/
(env) ~/projects/demo-app-2$ source env/bin/activate
(env) ~/projects/demo-app-2$ pip freeze
cycler==0.10.0
kiwisolver==1.2.0
matplotlib==3.2.1
numpy==1.18.4
pyparsing==2.4.7
python-dateutil==2.8.1
six==1.15.0
(env) ~/projects/demo-app-2$ python demo.py
Vous noterez que le (env)
ajouté à l'invite de commande reste cohérent lorsque nous passons de l'environnement virtuel de demo-app
à celui de demo-app-2
. C'est parce que les environnements virtuels ont tous les deux le même nom (env
). Nous verrons ce point de façon plus détaillée dans la prochaine section. ;)
Regardez la vidéo ci-dessous si vous souhaitez voir la démonstration d'un basculement entre environnements virtuels.
Exercice
Vous travaillez cette fois encore dans une agence de vente et de marketing en tant que spécialiste du marketing. Votre patron a travaillé sur deux projets Python différents, mais il veut à présent que vous en preniez la responsabilité. Malheureusement, il n'est pas au bureau aujourd'hui ! :colere:
Il vous a toutefois envoyé un dossier compressé contenant les projets sur lesquels il a travaillé. Vos tâches seront les suivantes :
Télécharger les dossiers et les fichiers des deux projets et les placer dans votre dossier de projets : p2c3s2.zip.
Créer un environnement virtuel pour chaque projet.
La première fois que vous tenterez d'exécuter chacune des applications, elle échouera.
Trouver et installer les paquets dont vous pensez avoir besoin pour exécuter chaque application.
Exécuter chaque application.
Vous entraîner à passer d'un environnement virtuel à l'autre et à exécuter chaque application.
Vérifiez votre travail
Regardez-moi exécuter l'exercice :
En résumé
Dans ce chapitre, vous avez acquis les compétences suivantes :
Basculer entre différents environnements virtuels lorsque vous travaillez sur plusieurs projets différents.
Activer un environnement virtuel alors que vous êtes dans un autre.
Maintenant que vous savez comment travailler avec plusieurs environnements virtuels, demandons-nous quelles sont les meilleures conventions de nommage pour ces environnements virtuels.