🔝 Retour au Sommaire
pip (Pip Installs Packages) est le gestionnaire de packages officiel de Python. Il permet d'installer, de mettre à jour et de gérer facilement des bibliothèques (packages) tierces depuis le Python Package Index (PyPI).
Plutôt que de réinventer la roue, pip vous permet d'utiliser des milliers de packages créés par la communauté Python pour ajouter des fonctionnalités à vos projets : manipulation de données, création d'interfaces web, traitement d'images, intelligence artificielle, et bien plus encore.
Une dépendance est un package externe dont votre projet a besoin pour fonctionner. Par exemple :
- Vous développez une application web → vous avez besoin de Flask ou Django
- Vous analysez des données → vous avez besoin de pandas et numpy
- Vous manipulez des images → vous avez besoin de Pillow
Au lieu d'écrire tout ce code vous-même, vous installez ces packages avec pip et les utilisez dans votre projet.
pip est généralement installé automatiquement avec Python. Pour vérifier :
# Vérifier la version de pip
pip --version
# Ou avec python -m pip
python -m pip --versionRésultat attendu :
pip 24.0 from /usr/lib/python3.11/site-packages/pip (python 3.11)
Si pip n'est pas installé, vous pouvez l'installer avec :
python -m ensurepip --upgradePour installer un package, utilisez la commande pip install :
pip install requestsCette commande :
- Cherche le package "requests" sur PyPI
- Télécharge la dernière version
- Installe le package et ses dépendances
Vous pouvez installer plusieurs packages en une seule commande :
pip install requests pandas matplotlibPour installer une version précise d'un package :
# Version exacte
pip install requests==2.28.0
# Version minimale
pip install requests>=2.25.0
# Version dans une plage
pip install requests>=2.25.0,<3.0.0Opérateurs de version disponibles :
==: Version exacte (par exemple :==2.28.0)>=: Version minimale (par exemple :>=2.25.0)<=: Version maximale (par exemple :<=2.30.0)>: Strictement supérieur<: Strictement inférieur!=: Exclure une version
Une fois installé, vous pouvez importer le package dans votre code Python :
# Après avoir fait : pip install requests
import requests
response = requests.get('https://api.github.com')
print(response.status_code) Pour voir tous les packages installés :
pip listRésultat :
Package Version
--------------- -------
certifi 2023.7.22
charset-normalizer 3.2.0
idna 3.4
requests 2.31.0
urllib3 2.0.4
Pour obtenir des informations détaillées sur un package :
pip show requestsRésultat :
Name: requests
Version: 2.31.0
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /usr/lib/python3.11/site-packages
Requires: certifi, charset-normalizer, idna, urllib3
Required-by:
Pour voir quels packages peuvent être mis à jour :
pip list --outdatedRésultat :
Package Version Latest Type
---------- -------- -------- -----
requests 2.28.0 2.31.0 wheel
numpy 1.24.0 1.25.2 wheel
pip install --upgrade requests
# Ou version courte
pip install -U requestsIl est recommandé de maintenir pip à jour :
pip install --upgrade pip
# Ou avec python -m pip
python -m pip install --upgrade pipPour supprimer un package :
pip uninstall requestspip vous demandera confirmation :
Proceed (Y/n)? Y
Pour désinstaller sans confirmation :
pip uninstall -y requestsDésinstaller plusieurs packages :
pip uninstall requests pandas numpyLe fichier requirements.txt est un fichier texte qui liste toutes les dépendances de votre projet. C'est une pratique standard en Python qui permet de :
- Documenter les packages nécessaires
- Faciliter l'installation sur d'autres machines
- Assurer la reproductibilité de l'environnement
Méthode 1 : Générer automatiquement
Générer la liste de tous les packages installés :
pip freeze > requirements.txtCela crée un fichier requirements.txt contenant :
certifi==2023.7.22
charset-normalizer==3.2.0
idna==3.4
requests==2.31.0
urllib3==2.0.4
Méthode 2 : Créer manuellement
Vous pouvez créer le fichier manuellement en listant uniquement vos dépendances directes :
# requirements.txt
requests==2.31.0
pandas>=1.5.0
matplotlib==3.7.2
numpy>=1.24.0,<2.0.0
Bonnes pratiques :
- Listez uniquement les packages que vous utilisez directement
- Spécifiez les versions pour assurer la reproductibilité
- Ajoutez des commentaires pour expliquer l'usage si nécessaire
# requirements.txt
# Requêtes HTTP
requests==2.31.0
# Analyse de données
pandas>=1.5.0
numpy>=1.24.0
# Visualisation
matplotlib==3.7.2
seaborn>=0.12.0
Pour installer tous les packages listés dans requirements.txt :
pip install -r requirements.txtCette commande est très utile pour :
- Configurer un nouvel environnement de développement
- Déployer votre application sur un serveur
- Permettre à d'autres développeurs de reproduire votre environnement
Pour des projets plus complexes, vous pouvez avoir plusieurs fichiers :
requirements/
base.txt # Dépendances communes
dev.txt # Dépendances de développement
prod.txt # Dépendances de production
test.txt # Dépendances pour les tests
Fichier : requirements/base.txt
# Dépendances nécessaires partout
requests==2.31.0
python-dotenv==1.0.0
Fichier : requirements/dev.txt
# Inclure les dépendances de base
-r base.txt
# Outils de développement
pytest==7.4.0
black==23.7.0
flake8==6.0.0
ipython==8.14.0
Fichier : requirements/prod.txt
# Inclure les dépendances de base
-r base.txt
# Dépendances spécifiques à la production
gunicorn==21.2.0
Installation :
# Développement
pip install -r requirements/dev.txt
# Production
pip install -r requirements/prod.txtPour trouver des packages disponibles, visitez PyPI.org ou utilisez votre moteur de recherche.
Exemple de recherche : "python package for json"
Développement Web :
flask: Micro-framework webdjango: Framework web completfastapi: Framework moderne et rapide
Analyse de données :
pandas: Manipulation de donnéesnumpy: Calcul numériquematplotlib: Visualisationseaborn: Visualisation statistique
Machine Learning :
scikit-learn: Algorithmes MLtensorflow: Deep learningpytorch: Deep learning
Utilitaires :
requests: Requêtes HTTPpillow: Traitement d'imagespython-dotenv: Gestion des variables d'environnementclick: Interface en ligne de commande
Automatisation et scraping :
selenium: Automatisation de navigateurbeautifulsoup4: Parsing HTML/XMLscrapy: Framework de web scraping
PyPI (Python Package Index) est le dépôt officiel de packages Python. C'est comme une "bibliothèque" géante où :
- Les développeurs publient leurs packages
- pip télécharge les packages lors de l'installation
- Plus de 500 000 packages sont disponibles
Site web : https://pypi.org/
Chaque package sur PyPI a une page contenant :
- Description : Qu'est-ce que fait le package
- Installation : Comment l'installer
- Documentation : Lien vers la doc complète
- Versions : Historique des versions
- Statistiques : Téléchargements, popularité
- Licence : Type de licence du package
- Dépendances : Autres packages nécessaires
URL : https://pypi.org/project/requests/
Informations visibles :
- Version actuelle : 2.31.0
- Description : "Python HTTP for Humans"
- Installation :
pip install requests - Licence : Apache 2.0
- Documentation : https://requests.readthedocs.io
Vous pouvez installer des packages directement depuis un dépôt Git :
# Depuis une URL GitHub
pip install git+https://github.com/username/repository.git
# Depuis une branche spécifique
pip install git+https://github.com/username/repository.git@branch-name
# Depuis un tag ou commit
pip install git+https://github.com/username/repository.git@v1.0.0Exemple pratique :
pip install git+https://github.com/psf/requests.gitLorsque vous développez votre propre package, vous pouvez l'installer en mode éditable :
pip install -e /chemin/vers/votre/packageAvantages :
- Les modifications du code source sont immédiatement visibles
- Pas besoin de réinstaller après chaque changement
- Utile pour le développement et les tests
Exemple :
# Structure du projet
mon_package/
setup.py
mon_package/
__init__.py
module.py
# Installation en mode éditable
cd mon_package
pip install -e . 💡 Note :
setup.pyest l'approche historique pour configurer un package Python. L'approche moderne utilisepyproject.toml(voir section 6.5 sur Poetry). Pour de nouveaux projets, préférezpyproject.toml.
Pour distribuer votre propre package, vous pouvez créer un fichier setup.py :
from setuptools import setup, find_packages
setup(
name="mon_package",
version="1.0.0",
description="Description de mon package",
author="Votre Nom",
author_email="email@example.com",
url="https://github.com/username/mon_package",
packages=find_packages(),
install_requires=[
"requests>=2.25.0",
"pandas>=1.3.0",
],
python_requires=">=3.10",
classifiers=[
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
],
)Installation de votre package :
# Installation normale
pip install .
# Installation en mode éditable
pip install -e .# Installation
pip install package_name
pip install package_name==1.0.0
pip install -r requirements.txt
# Mise à jour
pip install --upgrade package_name
pip install --upgrade pip
# Désinstallation
pip uninstall package_name
pip uninstall -y package_name
# Information
pip list
pip list --outdated
pip show package_name
pip freeze
pip freeze > requirements.txt
# Recherche (deprecated, utiliser PyPI.org)
# pip search était disponible mais est désormais désactivé
# Cache
pip cache list
pip cache purge
# Aide
pip help
pip help install # Installation silencieuse (sans affichage)
pip install -q requests
# Installation avec affichage détaillé
pip install -v requests
# Ne pas installer les dépendances
pip install --no-deps package_name
# Spécifier un index alternatif
pip install --index-url https://pypi.org/simple/ package_name
# Télécharger sans installer
pip download package_namePourquoi ?
- Éviter les conflits entre projets
- Isoler les dépendances
- Faciliter la reproduction de l'environnement
Nous verrons les environnements virtuels en détail dans la section suivante (6.4).
# ✅ BON : Versions fixées
requests==2.31.0
pandas==1.5.3
# ⚠️ Risqué : Sans version
requests
pandas
# 🔄 Compromis : Version minimale
requests>=2.31.0
pandas>=1.5.0,<2.0.0 Créez des fichiers requirements séparés :
requirements.txt: Dépendances de productionrequirements-dev.txt: Outils de développement
# requirements.txt
requests==2.31.0
flask==2.3.0
# requirements-dev.txt
pytest==7.4.0
black==23.7.0
flake8==6.0.0 Dans votre README ou documentation, spécifiez :
## Prérequis
- Python 3.10 ou supérieur
- pip 21.0 ou supérieur
## Installation
```bash
pip install -r requirements.txt
```Vérifiez régulièrement les mises à jour :
# Vérifier les packages obsolètes
pip list --outdated
# Mettre à jour prudemment
# Lire les changelogs avant de mettre à jour
pip install --upgrade package_namepip-tools est un ensemble d'outils pour gérer les dépendances :
pip install pip-toolsCréer un fichier requirements.in avec vos dépendances directes :
# requirements.in
flask
requests
Compiler pour générer requirements.txt avec toutes les dépendances :
pip-compile requirements.inUtilisez des outils comme safety pour détecter les vulnérabilités :
pip install safety
safety check Erreur :
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied
Solution :
N'utilisez JAMAIS sudo pip install. Utilisez un environnement virtuel à la place.
📝 PEP 668 : Sur les distributions Linux récentes (Ubuntu 23.04+, Fedora 38+, etc.),
pip installen dehors d'un environnement virtuel est bloqué par défaut avec l'erreurexternally-managed-environment. C'est un comportement voulu pour protéger les packages système. La solution est toujours d'utiliser un environnement virtuel (voir section 6.4).
Si vous devez absolument installer globalement :
pip install --user package_nameErreur :
ERROR: Could not find a version that satisfies the requirement package_name
Solutions :
- Vérifier l'orthographe du package sur PyPI.org
- Vérifier la compatibilité avec votre version de Python
- Mettre à jour pip :
pip install --upgrade pip
Erreur :
ERROR: Cannot install package-a and package-b because these package versions have conflicting dependencies.
Solutions :
- Utiliser un environnement virtuel séparé
- Ajuster les versions des packages
- Consulter la documentation pour connaître les versions compatibles
Erreur :
SSL: CERTIFICATE_VERIFY_FAILED
Solution temporaire :
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org package_nameSolution permanente : Mettre à jour les certificats de votre système.
Solution :
pip cache purge
pip install --no-cache-dir package_name Solutions :
- Utiliser un miroir PyPI plus proche
- Utiliser le cache pip
- Installer les packages compilés (wheels) plutôt que depuis les sources
pip install --only-binary :all: package_namepip :
- ✅ Standard pour Python
- ✅ Accès à tout PyPI (500k+ packages)
- ✅ Léger et rapide
- ❌ Gère uniquement Python
conda :
- ✅ Gère Python ET d'autres langages
- ✅ Résolution de dépendances plus robuste
- ✅ Packages binaires pré-compilés
- ❌ Plus lent
- ❌ Moins de packages disponibles
Quand utiliser quoi ?
- Projets Python purs → pip
- Data science / calcul scientifique → conda
- Projets complexes avec dépendances non-Python → conda
Nous verrons ces outils modernes dans la section 6.5 (Outils modernes).
Un wheel est un format de distribution pré-compilé pour Python :
pip wheel package_name# Installer un fichier .whl
pip install package-1.0.0-py3-none-any.whl
# Installer depuis un fichier .tar.gz
pip install package-1.0.0.tar.gzUtiliser un fichier de contraintes pour limiter les versions :
# constraints.txt
numpy<2.0.0
pandas>=1.0.0,<2.0.0
# Installation avec contraintes
pip install -c constraints.txt requests# Afficher l'arbre des dépendances
pip install pipdeptree
pipdeptree Résultat :
requests==2.31.0
├── certifi [required: >=2017.4.17]
├── charset-normalizer [required: >=2,<4]
├── idna [required: >=2.5,<4]
└── urllib3 [required: >=1.21.1,<3]
mkdir mon_projet
cd mon_projet python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windowspip install requests pandas flaskpip freeze > requirements.txt# app.py
import requests
import pandas as pd
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)Votre projet contient maintenant :
mon_projet/
venv/ (à ne pas partager)
app.py
requirements.txt (à partager)
README.md
.gitignore
Fichier : .gitignore
venv/
__pycache__/
*.pyc
.env
Les autres développeurs pourront recréer l'environnement avec :
pip install -r requirements.txtDans cette section, vous avez appris :
- Ce qu'est pip et comment l'utiliser pour gérer les packages Python
- Comment installer, mettre à jour et désinstaller des packages
- L'importance du fichier
requirements.txtpour documenter les dépendances - Comment rechercher et explorer les packages sur PyPI
- Les bonnes pratiques pour gérer les dépendances
- Comment résoudre les problèmes courants
- Les commandes pip avancées pour des cas d'usage spécifiques
pip est un outil essentiel dans l'écosystème Python qui vous permet d'accéder à une immense bibliothèque de packages créés par la communauté. Combiné avec les environnements virtuels (section suivante), pip devient un outil puissant pour gérer efficacement vos projets Python.
Dans la prochaine section, nous verrons comment créer des environnements virtuels isolés pour chaque projet, une pratique indispensable pour tout développeur Python professionnel.