
Lorsque vous avez besoin d’un package Python sur Ubuntu ou Debian, la bonne commande d’installation n’est pas toujours évidente. Certains packages proviennent de la distribution via apttandis que d’autres proviennent de l’index des packages Python via pip. Ils résolvent différents problèmes, et les mélanger au mauvais endroit peut casser les outils système ou laisser des projets avec des dépendances conflictuelles.
Ce guide explique quand utiliser aptquand utiliser pipet pourquoi les environnements virtuels Python constituent la valeur par défaut la plus sûre pour les dépendances d’applications.
Guide de décision rapide
| Situation | Utiliser |
|---|---|
| Installation d’un outil CLI système maintenu par Ubuntu ou Debian | apt |
| Installer des bibliothèques Python pour un projet | pip dans un environnement virtuel |
| Installer un package qui n’est pas dans les référentiels apt | pip dans un environnement virtuel |
| Installation d’une version de package plus récente que celle fournie par la distribution | pip dans un environnement virtuel |
| Installation d’un outil Python CLI pour votre compte utilisateur | pipx |
| Installer une dépendance requise par un autre package apt | apt |
Ce que fait chaque outil
apt installe les packages à partir des référentiels de distribution. Packages Python distribués via apttel que python3-requests ou python3-numpysont testés par rapport à la version Python et aux bibliothèques système de cette version Ubuntu ou Debian. Ils s’installent à l’échelle du système et s’intègrent au résolveur de dépendances de distribution.
pip installe les packages à partir du Python Package Index (PyPI). PyPI propose plus de packages et de versions plus récentes que la plupart des référentiels de distribution. pip ne se coordonne pas avec aptil ne sait donc pas de quels packages Python le système d’exploitation est installé ou dont dépend.
Quand utiliser apt
Utiliser apt pour:
- Outils système écrits en Python, tels que
cloud-init,ansibleoucertbot. Ces packages sont maintenus en tant que composants système et attendent le système Python. - Packages Python requis par d’autres
aptforfaits. Si vous installez un outil CLI basé sur Python avecaptet il énumèrepython3-yamlen tant que dépendance,aptgère cela automatiquement. - Serveurs ou conteneurs pour lesquels vous souhaitez des versions reproductibles et testées par la distribution et n’avez pas besoin de la dernière version en amont.
Installez un package Python depuis les dépôts Ubuntu ou Debian avec apt:
Terminal
sudo apt install python3-requests
Le nom du package inclut généralement le python3- préfixe. Après l’installation, le package est disponible pour l’interpréteur système Python et pour les autres packages installés via apt.
Quand utiliser pip
Utiliser pip pour:
- Dépendances d’application dans un environnement virtuel.
- Packages non disponibles dans les référentiels de distribution.
- Packages pour lesquels vous avez besoin d’une version spécifique ou plus récente que
aptfournit.
Installer un paquet avec pip dans un environnement virtuel :
Terminal
pip install requests
Dans ce cas, le nom du package PyPI est requeststandis que le package apt équivalent est nommé python3-requests. Cette différence de nom est normale.
Pourquoi sudo pip install est risqué
En cours d’exécution sudo pip install peut placer des packages sur le chemin d’importation Python du système, à côté ou avant les packages gérés par apt. Cela crée deux problèmes :
pippeut remplacer, rétrograder ou masquer les packages dont dépendent les outils système.- Sur Ubuntu 23.04 et versions ultérieures, et Debian 12 et versions ultérieures,
piprefuse d’installer Python dans le système par défaut et génère unexternally-managed-environmenterreur. Cette restriction est intentionnelle.
Le message d’erreur ressemble à :
sortir
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
La bonne réponse à cette erreur est d’utiliser un environnement virtuel, et non de remplacer la restriction par --break-system-packages.
Utiliser des environnements virtuels pour les projets
Un environnement virtuel est une installation Python isolée avec son propre site-packages. L’installation de packages à l’intérieur n’affecte pas le système Python ou tout autre environnement :
Terminal
python3 -m venv myenv
source myenv/bin/activate
pip install requests flask gunicorn
Sur Ubuntu et Debian, installez d’abord le support venv si le python3 -m venv la commande n’est pas disponible :
Terminal
sudo apt install python3-venv
Après activate, pip et python pointer vers l’environnement virtuel. Les packages s’installent là-bas au lieu de s’installer à l’échelle du système. Désactivez avec :
Terminal
deactivate
Les environnements virtuels sont la pratique standard pour toute application ou projet Python. Créez-en un par projet, ajoutez-le à .gitignoreet installez les dépendances à partir d’un requirements.txt:
Terminal
pip install -r requirements.txt
Pour une présentation plus complète, consultez notre guide de création d’environnements virtuels Python.
Utiliser pipx pour les outils CLI utilisateur
Si vous souhaitez qu’un outil de ligne de commande Python soit disponible dans votre compte utilisateur, utilisez pipx au lieu de l’installer dans le système Python ou un utilisateur partagé site-packages annuaire. pipx crée un petit environnement virtuel privé pour chaque outil et expose la commande sur votre PATH.
Installer pipx puis installez un outil :
Terminal
sudo apt install pipx
pipx install httpie
C’est un bon choix pour des outils tels que httpie, black, ruffet poetryoù vous souhaitez que la commande soit disponible partout mais ne souhaitez pas que le package soit mélangé dans un environnement de projet.
Vous verrez peut-être encore des guides plus anciens recommander pip install --user. Cela installe les packages sous ~/.local/mais tous les packages au niveau utilisateur partagent le même emplacement et peuvent entrer en conflit les uns avec les autres. Sur les installations Python gérées en externe, pip install --user peut également être rejeté pour la même raison qu’une installation du système. Utiliser pipx pour les outils CLI autonomes et un environnement virtuel pour les bibliothèques de projets.
Où installer pip lui-même
Sur Ubuntu et Debian, le package de distribution pour pip est python3-pip:
Terminal
sudo apt install python3-pip
Cela vous donne le pip commande, mais cela ne signifie pas que vous devez installer des packages dans le système Python. Traitez-le comme le programme d’installation que vous utilisez dans les environnements virtuels. Pour des instructions de configuration détaillées, consultez Comment installer Python Pip sur Ubuntu .
Conclusion
Utiliser apt pour les packages Python appartenant au système d’exploitation, pip dans un environnement virtuel pour les dépendances du projet, et pipx pour les outils CLI Python autonomes. Si vous voyez le externally-managed-environment erreur, créez un environnement virtuel plutôt que de le remplacer par --break-system-packages.