pip en Python : installer une bibliothèque

pip installe une bibliothèque Python depuis PyPI, avec ses dépendances, dans l'interpréteur auquel il est rattaché. Encore faut-il savoir lequel.
5 min de lecture
Believemy logo

Définition

Écrire un programme demande rarement de tout écrire soi-même : une partie du travail existe déjà, publiée par quelqu'un d'autre sous forme de bibliothèque. Reste à la faire atterrir sur votre machine, au bon endroit. C'est ce que règle pip, l'installateur de paquets livré avec Python.

Il interroge PyPI, le dépôt où sont publiées la plupart des bibliothèques Python, télécharge l'archive qui correspond à votre version, la dépose dans le dossier de l'interpréteur, puis recommence pour chaque dépendance. La commande la plus courante ressemble à ceci :

BASH
pip install requests

À partir de cette seule ligne, import requests fonctionne dans vos fichiers. Cela évite le téléchargement manuel d'une archive, sa copie au bon endroit, et la chasse aux dépendances de la dépendance. La bibliothèque requests en tire à elle seule quatre autres derrière elle, sans que vous ayez à les chercher une par une.

Bon à savoir

pip ne se limite pas à PyPI. Il installe aussi depuis un dépôt Git ou un dossier local, surtout utile pour essayer une version de développement avant sa publication officielle.


Le piège numéro un : plusieurs Python sur la machine

Un ordinateur héberge rarement un seul Python : celui du système, parfois un second installé à la main, et un troisième par environnement virtuel de projet. Ce que pip ne fait jamais, c'est deviner lequel vous voulez utiliser. Il s'installe dans l'interpréteur auquel il est rattaché au moment où vous tapez la commande, et rien ne garantit que ce soit celui qui exécutera votre script.

Le symptôme est toujours le même : le terminal annonce « Successfully installed », et la ligne d'import lève pourtant une ModuleNotFoundError plus tard. Rien n'est cassé, la bibliothèque est bien installée sur le disque, simplement pas dans l'interpréteur qui exécute ce script.

BASH
# Installation rattachée à l'interpréteur courant
python -m pip install requests

# En cas de doute, savoir qui est qui
python -c "import sys; print(sys.executable)"

La forme python -m pip garantit que l'installation et l'exécution passent par le même interpréteur, puisqu'elle démarre depuis Python lui-même plutôt que depuis une commande pip qui peut pointer ailleurs. C'est le premier réflexe quand une installation semble n'avoir servi à rien.


Les commandes qui servent vraiment

La documentation de pip détaille des dizaines de commandes, réservées à des cas particuliers. Le tableau qui suit rassemble les sept qui reviennent jour après jour.

CommandeCe qu'elle fait
pip install numpyInstalle la dernière version compatible, dépendances comprises
pip install "numpy==1.26.4"Fige une version précise, pour reproduire un environnement
pip install -r requirements.txtRejoue une liste de dépendances, ligne par ligne
pip uninstall numpyRetire le paquet, mais laisse ses dépendances en place
pip listAffiche ce qui est installé dans cet interpréteur précis
pip freezeSort la même liste au format d'un fichier de dépendances
pip show numpyDonne la version, l'emplacement sur le disque et les dépendances

La désinstallation mérite une seconde d'attention : retirer un paquet laisse derrière lui tout ce qu'il avait fait venir. Un environnement ne se nettoie donc jamais vraiment dépendance par dépendance : on le supprime entièrement, puis on le reconstruit à partir du fichier de dépendances.


Ce qu'il ne fait pas

pip installe, il n'isole rien. Sans venv, tout atterrit dans une seule installation partagée, ce qui ne pose aucun problème tant qu'un seul projet est concerné. La difficulté apparaît dès qu'un second projet, sur la même machine, réclame une version différente de la même bibliothèque : les deux ne peuvent pas coexister au même endroit.

Attention

Sur un système récent, installer directement dans le Python de la machine renvoie une erreur « externally-managed-environment ». Forcer le passage avec --break-system-packages fonctionne, mais mélange vos bibliothèques à celles dont le système dépend pour tourner : une mise à jour malheureuse peut casser des outils sans rapport avec votre projet.

pip ne verrouille pas non plus les versions. Un fichier requirements.txt produit par pip freeze photographie l'état d'une machine à un instant donné : rejouer ce fichier six mois plus tard peut aboutir à un arbre de dépendances différent.

C'est le terrain que couvrent poetry et les outils du même genre, qui gèrent l'environnement, la résolution et le verrouillage au même endroit. Seul sur un script court, pip et un environnement virtuel suffisent largement. À plusieurs sur un projet qui doit se réinstaller à l'identique, un vrai fichier de verrouillage évite les soirées perdues sur un écart de version.


Questions fréquentes

Question

Faut-il installer pip séparément ?

Non, il fait partie de l'installation standard depuis Python 3.4. S'il reste introuvable dans le terminal, ce n'est presque jamais qu'il manque vraiment : c'est plutôt que la commande pip seule ne pointe pas vers l'interpréteur attendu. La forme python -m pip règle ce cas dans l'immense majorité des situations.

Question

Pourquoi certains noms installent-ils autre chose que la bibliothèque attendue ?

Parce que le nom publié sur le dépôt ne coïncide pas toujours avec le nom d'import : on installe scikit-learn pour importer sklearn. Pire, un module de la bibliothèque standard comme json n'a rien à installer, et le nom qui lui ressemble sur le dépôt peut pointer vers un paquet abandonné. Le nom exact figure toujours dans la documentation du projet visé.

Question

Comment mettre à jour toutes les bibliothèques d'un coup ?

Aucune commande officielle ne le fait, et c'est un choix délibéré. Monter toutes les versions en même temps casse parfois un projet sans indiquer laquelle est en cause. La marche la plus raisonnable reste pip list --outdated, puis une montée de version à la fois, chacune suivie d'un passage de la suite de tests avec pytest.

Termes connexes

Découvrez notre glossaire Python

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement avec Python.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.