Gestion des versions et des paquets en Python 1/4

Si vous avez programmé en Python depuis quelques temps, vous êtes sans doute rendu compte que la gestion des paquets de Python est assez difficile.Le langage de programmation en lui-même est très facile mais la gestion des paquets est assez technique et il y a plusieurs raisons à cela.Qui ne s’est jamais heurté à un paquet qui manque ou à une version de Python qui ne correspond pas au paquet et vice versa ?Nous allons essayer, à travers de ces quelques articles, de nous renseigner un peu plus sur le fonctionnement des paquets pitons et ainsi d’être plus avertis sur les difficultés rencontrées.

Si vous êtes dans l’intelligence artificielle, vous y avez utilisé beaucoup de pitons, notamment les bibliothèques pour CUDA pour la carte graphique, qui sont importantes. Un traitement par votre CPU classique prend 10 à 20 fois plus de temps qu’une carte graphique. Donc vous avez intérêt à savoir maîtriser l’installation de librairies pour votre carte graphique.

Le modèle mental indispensable

Les difficultés viennent souvent du fait que l’on confond plusieurs éléments indépendants :

  1. la version de Python ;
  2. l’interpréteur Python réellement exécuté ;
  3. l’environnement Python actif ;
  4. l’outil d’installation des paquets ;
  5. les versions des bibliothèques ;
  6. les formats de distribution comme les wheels ;
  7. le système d’exploitation et l’architecture du processeur.

Lorsqu’on exécute :

pip install pandas

Il faut tenir compte d’autres facteurs comme quelle est la version de pip exécutée, quel interpréteur Python le contient.Dans quel environnement s’installe-t-il et est-ce qu’il existe un fichier binaire compatible avec mon système ?

C’est un petit peu la fonction du succès de Python qui existe dans de nombreuses définitions et ça explique pourquoi c’est assez difficile parfois mais pas tout le temps de bien gérer ses librairies.

Une installation Python n’est pas un simple exécutable

Qu’est-ce qu’une version de Python ?

Une installation Python contient notamment :

  • un interpréteur ;
  • la bibliothèque standard ;
  • des fichiers de configuration ;
  • un répertoire destiné aux paquets externes ;
  • éventuellement pip ;
  • parfois des bibliothèques natives ;
  • des en-têtes C pour compiler des extensions.

L’exécutable peut porter différents noms :

python
python3
python3.11
python3.12
python.exe

Sous Windows, on peut également disposer du lanceur Python :

py

Le lanceur py est particulièrement utile lorsque plusieurs versions sont installées.

Exemples :

py --list
py -3.11 --version
py -3.12 --version
py -3.11 script.py

Une version Python est constituée de l’interpréteur, de la bibliothèque standard et de ses fichiers associés.

Version majeure, mineure et corrective

Dans :

Python 3.12.7

on distingue :

3      version majeure
12     version mineure
7      version corrective

Les incompatibilités de paquets concernent principalement la version mineure.

Par exemple :

Python 3.10
Python 3.11
Python 3.12
Python 3.13

ne doivent pas être considérés comme quatre mises à jour parfaitement interchangeables.

Une bibliothèque peut déclarer :

Requires-Python >=3.10,<3.13

Elle acceptera Python 3.10, 3.11 et 3.12, mais refusera Python 3.13.

À l’inverse, les versions correctives sont normalement compatibles entre elles :

3.12.1
3.12.7
3.12.10

Un environnement virtuel créé avec Python 3.12.1 reste généralement utilisable avec les correctifs de la branche 3.12, même s’il est souvent préférable de le recréer après un changement important de l’installation système.

CPython n’est pas l’unique implémentation de Python