• 6 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 11/12/2023

Utilisez le système de versioning de paquets

Pourquoi gérons-nous les versions des paquets ?

Lorsque vous avez travaillé sur des documents texte, vous avez probablement dû nommer certains d’entre eux comme ceci : myfile.doc  , myfilev2.doc  , myfilev3.doc  , pour savoir à quelle version ils correspondent. Vous avez peut-être également indiqué la date dans le nom du fichier : myfile22062020.doc  , myfile23062020.doc  , !myfile27062020.doc  .

Comme pour les documents texte, les paquets Python sont "versionnés" pour faciliter le suivi des versions de chacun. Les versions des paquets Python, toutefois, sont gérées selon un format strict :

major.minor.patch

... où major  , minor  et patch  sont tous des nombres entiers.

Chaque fois qu'un changement est apporté à un paquet Python, le numéro de version change (quelle que soit l'importance de la modification). Les modifications sont réparties en trois catégories différentes :

  • Si la modification consiste en une correction de bug rétrocompatible, le numéro de patch  est incrémenté.

  • Si elle consiste en un élément de nouvelle fonctionnalité rétrocompatible, le numéro minor  est incrémenté.

  • Si elle n'est pas rétrocompatible , alors major  est incrémenté. Il s'agit alors d'un « breaking change » :pirate:, ce qui signifie que le changement de version peut “casser” un script Python donné, et il sera nécessaire de réécrire ce dernier en tenant compte des changements apparus dans la nouvelle version du paquet.

Dans ce cours, nous avons jusqu'à présent installé des paquets Python à l'aide de la commande pip install <package>  , où <package>  correspond au nom du paquet Python que vous voulez installer. Lorsque nous exécutons cette commande, la version du paquet n'est absolument pas mentionnée. Toutefois, vous pouvez remarquer que le résultat de la commande contient une référence à une version particulière du paquet. Par exemple, si j'exécute la commande suivante :

$ pip install requests
Collecting requests
Using cached https://files.pythonhosted.org/packages/45/1e/0c169c6a5381e241ba7404532c16a21d86ab872c9bed8bdcd4c423954103/requests-2.24.0-py2.py3-none-any.whl
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in ./anaconda3/lib/python3.7/site-packages (from requests) (1.24.1)
Requirement already satisfied: certifi>=2017.4.17 in ./anaconda3/lib/python3.7/site-packages (from requests) (2019.6.16)
Requirement already satisfied: chardet<4,>=3.0.2 in ./anaconda3/lib/python3.7/site-packages (from requests) (3.0.4)
Requirement already satisfied: idna<3,>=2.5 in ./anaconda3/lib/python3.7/site-packages (from requests) (2.8)
Installing collected packages: requests
Successfully installed requests-2.24.0

Notez que ma commande pip install requests  ne mentionne pas de version spécifique du paquet, mais que la dernière ligne du résultat, Successfully installed requests-2.24.0  , montre que nous avons installé une version spécifique : 2.24.0  . Cette version est, à l'heure actuelle, la dernière version disponible du paquet requests  . Si vous ne spécifiez pas de version de paquet, pip  installe donc le dernier paquet requests  disponible.

Maîtrisez le système de versioning des paquets

Le moyen le plus simple pour installer une version de paquet Python consiste à utiliser l'opérateur ==  . Par exemple, pip install requests==2.1.0  installera, comme vous vous en doutez, la version 2.1.0  . Il existe toutefois plusieurs façons différentes de préciser la version du paquet. Par exemple :

  •  pip install requests~=2.2  installera la version la plus élevée disponible au-dessus de 2.2!  , mais pas 3.0  ni les versions ultérieures.

  •  pip install requests~=2.1.0  installera la version la plus élevée disponible au-dessus de 2.1.0  , mais pas la version 2.2.0  ni les versions ultérieures.

  •  pip install requests>2.5.0  installera la version la plus élevée disponible au-dessus de 2.5.0  .

  •  pip install "requests>2.4.0,<2.6.0"  installera la version la plus élevée disponible supérieure à 2.4.0  , mais inférieure à 2.6.0  .

Notez que dans le dernier exemple, puisque nous utilisons une syntaxe plus compliquée, nous encadrons le nom du paquet et nos exigences de versions avec des guillemets.

Testons ensemble quelques-unes de ces commandes. Chaque fois que nous installerons le paquet requests  , nous le désinstallerons à l'aide de la commande pip uninstall <package>  . Commençons par désinstaller requests  :

$ pip uninstall requests
Uninstalling requests-2.5.3:
Would remove:
/Users/george/anaconda3/lib/python3.7/site-packages/requests-2.5.3.dist-info/*
/Users/george/anaconda3/lib/python3.7/site-packages/requests/*
Proceed (y/n)? y
Successfully uninstalled requests-2.5.3

Exécutons maintenant pip install requests~=2.2  :

$ pip install requests~=2.2
Collecting requests~=2.2
Using cached https://files.pythonhosted.org/packages/45/1e/0c169c6a5381e241ba7404532
c16a21d86ab872c9bed8bdcd4c423954103/requests-2.24.0-py2.py3-none-any.whl
Requirement already satisfied: idna<3,>=2.5 in 
./anaconda3/lib/python3.7/site-packages (from requests~=2.2) (2.8)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in 
./anaconda3/lib/python3.7/site-packages (from requests~=2.2) (1.24.1)
Requirement already satisfied: certifi>=2017.4.17 in 
./anaconda3/lib/python3.7/site-packages (from requests~=2.2) (2019.6.16)
Requirement already satisfied: chardet<4,>=3.0.2 in 
./anaconda3/lib/python3.7/site-packages (from requests~=2.2) (3.0.4)
Installing collected packages: requests
Successfully installed requests-2.24.0

Comme prévu, cette commande installe la version 2.24.0  , soit la version la plus élevée de   requests   disponible en dessous de 3.0  (qui d’ailleurs n'existe pas encore à l'heure où sont écrites ces lignes).

Désinstallons à nouveau, puis exécutons pip install requests~=2.1.0  :

$ pip uninstall requests
Uninstalling requests-2.24.0:
Would remove:
/Users/george/anaconda3/lib/python3.7/site-packages/requests-2.24.0.dist-info/*
/Users/george/anaconda3/lib/python3.7/site-packages/requests/*
Proceed (y/n)? y
Successfully uninstalled requests-2.24.0

$ pip install requests~=2.1.0
Collecting requests~=2.1.0
Using cached https://files.pythonhosted.org/packages/1e/97/f0a8e5e71c75a2abf5ec91438b84ec1a40a5e1b5f985c06721a3ebe57c0a/requests-2.1.0-py2.py3-none-any.whlconda 4.7.5 has requirement requests>=2.12.4, but you'll have requests 2.1.0 which is incompatible.
anaconda-client 1.7.2 has requirement requests>=2.9.1, but you'll have requests 2.1.0 which is incompatible.
Installing collected packages: requests
Successfully installed requests-2.1.0

Cette commande installe la version 2.1.0  , soit la version la plus élevée de requests  disponible dans la plage 2.1.x  .

Désinstallons à nouveau requests  et essayons notre dernière commande d'installation, pip install “requests>2.4.0,<2.6.0”  :

$ pip uninstall requests
Uninstalling requests-2.1.0:
Would remove:
/Users/george/anaconda3/lib/python3.7/site-packages/requests-2.1.0.dist-info/*
/Users/george/anaconda3/lib/python3.7/site-packages/requests/*
Proceed (y/n)? y
Successfully uninstalled requests-2.1.0

$ pip install “requests>2.4.0,<2.6.0”
-bash: 2.6.0”: No such file or directory

$ pip install "requests>2.4.0,<2.6.0"
Collecting requests<2.6.0,>2.4.0
Using cached https://files.pythonhosted.org/packages/95/54/44dc83b5f11c6da06bf9abd18c8a0905e0e297e0a9c3bfbc0c6ee4bdd33d/requests-2.5.3-py2.py3-none-any.whlconda 4.7.5 has requirement requests>=2.12.4, but you'll have requests 2.5.3 which is incompatible.
anaconda-client 1.7.2 has requirement requests>=2.9.1, but you'll have requests 2.5.3 which is incompatible.
Installing collected packages: requests
Successfully installed requests-2.5.3

Cette commande installe requests! !2.5.3  , la version de requests  la plus élevée disponible, supérieure à 2.4.0  mais inférieure à 2.6.0  .

Pour me voir installer différentes versions de requests  , regardez la vidéo suivante :

Exercice

Votre responsable a effectué des analyses à l'aide de Python. Il a écrit un script qui utilise deux paquets Python : matplotlib  version 3.2.2  et numpy  version 1.19.0  .

D’abord, installez le script : p1c4s2_script.py

Puis installez les deux versions spécifiques de paquets et exécutez le script.

En résumé

  • Les paquets Python sont versionnés pour faciliter le suivi des versions de chaque code.

  • Les paquets Python reçoivent un nouveau numéro de version chaque fois qu'une modification leur est apportée.

  • Vous pouvez utiliser   !pip!  pour installer la version souhaitée d'un paquet Python.

Maintenant que vous maîtrisez le système de versioning des paquets Python, vérifions que vous avez compris le pip à l'aide d'un quiz rapide. Nous verrons ensuite comment configurer un environnement virtuel, ce qui est l'une des façons d'utiliser des versions de paquets Python différentes pour des projets distincts.

Exemple de certificat de réussite
Exemple de certificat de réussite