La force de Python, c’est son écosystème : plus de 500 000 packages disponibles sur le dépôt officiel PyPI (Python Package Index). Pour manipuler des images, analyser des données, faire du web, de l’IA… il existe presque toujours une bibliothèque toute prête. Ce chapitre vous explique comment les installer et les gérer proprement avec pip et les environnements virtuels.
37.1 Qu’est-ce qu’un package ?
Un package (ou bibliothèque) est un module (ou ensemble de modules) développé par la communauté Python, publié sur PyPI, et installable en une commande.
Quelques packages célèbres
Package
Domaine
numpy
Calcul numérique (matrices, vecteurs)
pandas
Analyse de données tabulaires
matplotlib, seaborn
Visualisation
requests
Requêtes HTTP
flask, django, fastapi
Serveurs web
beautifulsoup4
Parsing HTML
pillow
Manipulation d’images
pytest
Tests unitaires
scikit-learn, tensorflow, pytorch
Machine learning / IA
L’écosystème couvre quasiment tous les domaines de l’informatique.
37.2pip — l’outil d’installation
pip (Pip Installs Packages) est le gestionnaire de paquets officiel de Python. Il est installé par défaut avec Python 3.
Vérifier pip
pip--version
Devrait afficher quelque chose comme pip 24.0 (python 3.10). Sur certains systèmes, la commande est pip3 (pour distinguer de la version Python 2).
Installer un package
pip install nom_du_package
Exemple :
pip install requests
Après installation, le package est importable dans Python :
Si pip install installait tout globalement, les deux versions entreraient en conflit. L’environnement virtuel résout ce problème en isolant chaque projet.
Un environnement virtuel est un dossier isolé qui contient :
Sa propre copie de Python.
Ses propres packages installés.
Complètement séparé du Python système et des autres projets.
Créer un environnement virtuel : venv
Python fournit le module venv dans sa bibliothèque standard.
python-m venv mon_env
Cette commande crée un dossier mon_env/ contenant l’environnement.
Activer l’environnement
Sur Linux / macOS :
source mon_env/bin/activate
Sur Windows (PowerShell) :
mon_env\Scripts\Activate.ps1
Sur Windows (cmd.exe) :
mon_env\Scripts\activate.bat
Une fois activé, votre terminal affiche (mon_env) au début de la ligne. Toutes les commandes pip install installeront les packages dans cet environnement seulement.
Désactiver
deactivate
Vérifier qu’on est bien dans l’environnement
which python # Linux/Macwhere python # Windows
Le chemin devrait pointer vers mon_env/bin/python (ou mon_env/Scripts/python.exe).
Bonne pratique : un environnement par projet
Pour chaque nouveau projet Python, créez un nouvel environnement virtuel dans le dossier du projet. Convention fréquente : appeler le dossier .venv, venv ou env.
cd mon_projet/python-m venv .venvsource .venv/bin/activate # Linux/Macpip install -r requirements.txt
Ajoutez .venv/ à votre .gitignore — inutile de versionner l’environnement, on peut toujours le recréer.
37.4requirements.txt — la liste des dépendances
Un fichier requirements.txt liste toutes les dépendances d’un projet. Il permet à n’importe qui de reconstruire votre environnement en une commande.
Le fichier __init__.py (souvent vide) signale à Python : « ce dossier est un package importable ». Depuis Python 3.3, il est techniquement optionnel pour les packages « namespace », mais incluez-le par clarté.
Que mettre dans __init__.py ?
Le plus souvent : rien. Parfois, on y expose certains noms du package pour faciliter les imports :
from utils import carre # au lieu de from utils.maths import carre
37.8from . import et imports relatifs
À l’intérieur d’un package, on peut faire des imports relatifs avec . :
# Dans utils/strings.pyfrom .maths import carre # importe depuis le même package
Le . signifie « le package courant ». .. remonte d’un niveau.
Les imports relatifs ne fonctionnent pas dans un script principal
Si vous lancez python strings.py directement, from .maths import carreplante. Les imports relatifs ne fonctionnent que si le fichier est importé comme module d’un package, pas exécuté en script.
Pour les scripts principaux, utilisez des imports absolus :
# ✅ Dans un script qu'on lance directementfrom utils.maths import carre
GitHub : le code source de la plupart des packages est sur GitHub. Les stars donnent une idée de la popularité.
Critères pour choisir un package
Avant d’installer un package, vérifiez :
Dernière version récente ? (pas abandonnée)
Nombreux téléchargements ? (populaire = mature)
Documentation correcte ?
Licence compatible avec votre usage ?
Nombre d’issues ouvertes raisonnable ?
Un package avec 1000 étoiles et 3 contributeurs actifs est plus fiable qu’un package avec 50 étoiles dormant depuis 3 ans.
🧩 Quiz 8.1 — pip et l’écosystème
Question 1
Comment installer le package requests ?
python install requests
pip install requests
import requests
apt install python-requests
🔍 Réponse
b) pip install requests — pip est le gestionnaire de paquets officiel. apt install fonctionnerait aussi sur Linux pour le package système, mais c’est déconseillé (préférer pip dans un environnement virtuel).
Question 2
À quoi sert un environnement virtuel ?
À exécuter Python plus rapidement
À isoler les dépendances d’un projet
À chiffrer le code
À compiler Python
🔍 Réponse
b) — chaque projet a son propre environnement avec ses propres packages et versions, sans conflit avec d’autres projets.
Question 3
Quelle commande liste tous les packages installés ?
pip packages
pip list
pip show all
pip all
🔍 Réponse
b) pip list — pip show <nom> affiche les détails d’un package précis.
Question 4
Que fait pip freeze > requirements.txt ?
Bloque pip temporairement
Écrit la liste des packages installés (avec versions) dans le fichier
Supprime tous les packages
Met à jour pip
🔍 Réponse
b) — pip freeze affiche la liste des packages au format nom==version. Redirigée dans un fichier, elle permet de reproduire l’environnement ailleurs.
Question 5
Comment créer un environnement virtuel ?
pip env create
python -m venv mon_env
virtualenv new
python create env
🔍 Réponse
b) python -m venv mon_env — venv est un module inclus dans Python 3. virtualenv est un outil externe plus ancien, similaire mais qui doit être installé séparément.
Question 6
Que contient le fichier __init__.py ?
La fonction main du projet
La configuration de l’installateur
Il signale qu’un dossier est un package Python (souvent vide)
La documentation du package
🔍 Réponse
c) — c’est le marqueur d’un package. Il peut être vide ou contenir des imports. Depuis Python 3.3, il est optionnel pour les packages « namespace », mais il est recommandé de l’inclure.
Question 7
Vous voulez installer exactement la version 2.31.0 de requests. Quelle commande ?
pip install requests-2.31.0
pip install requests==2.31.0
pip install requests 2.31.0
pip install requests:2.31.0
🔍 Réponse
b) pip install requests==2.31.0 — le double == pour une version exacte. >=, <=, <, > pour des plages.
✏️ Exercice 8.1 — Créer un projet complet
Suivez ce mini-workflow pour créer un projet Python isolé.
geometrie.py doit exposer aire_rectangle(l, w) et aire_cercle(r).
statistiques.py doit exposer moyenne(notes) et mediane(notes).
Le __init__.py doit permettre d’importer ces fonctions directement depuis calculs.
main.py doit utiliser ces fonctions.
calculs/geometrie.py :
"""Fonctions de calculs géométriques."""from math import pidef aire_rectangle(longueur, largeur):return longueur * largeurdef aire_cercle(rayon):return pi * rayon **2
calculs/statistiques.py :
"""Fonctions de statistiques."""def moyenne(notes):ifnot notes:return0returnsum(notes) /len(notes)def mediane(notes):ifnot notes:returnNone tri =sorted(notes) n =len(tri)if n %2==1:return tri[n //2]return (tri[n //2-1] + tri[n //2]) /2
Expliquez la différence entre les quatre formes de spécification de version.
Signification :
requests==2.31.0 : HTTP en Python. Version exacte (2.31.0, pas autre).
pandas>=2.0 : analyse de données tabulaires. Version 2.0 ou plus.
matplotlib : visualisation/graphiques. N’importe quelle version (dernière disponible).
pytest>=7.0,<8.0 : tests unitaires. Entre 7.0 inclus et 8.0 exclu.
Installation :
pip install -r requirements.txt
Philosophies :
Spécification
Avantage
Inconvénient
Version exacte (==)
Reproductible
Pas de correctifs auto
Minimum (>=)
Auto-mise à jour
Peut casser avec des breaking changes
Sans contrainte
Toujours la plus récente
Très risqué
Plage (>=X,<Y)
Compromis équilibré
Plus complexe à maintenir
Recommandation : privilégier les plages majeures, comme pytest>=7.0,<8.0, qui accepte les correctifs sans risquer une montée de version majeure incompatible.