pip, à ne pas confondre avec Spip ou pipe, est un petit utilitaire pour ajouter librairies (modules on devrait dire) python. Il est bien fichu, il gère les dépendances, et permet de faire un peu de gestion, à la manière d'un gestionnaire de paquet comme aptitude ou yum.
c'est facile, il est fourni dans une suite d'outils pour python appelée setuptools
, on trouve des paquets facilement dans les gestionnaires de dépots linux, et il existe un executable pour l'installer sous windows.
pip gère les dépendances d'un module, il va installer tout seul les modules nécessaires au bon fonctionnement du module que vous voulez installer
pip install nomModule
on peut aussi choisir d'installer une version précise d'un module :
pip install nomModule=0.9
pip sait aussi désinstaller des modules :
pip uninstall nomModule
on peut mettre à jour (ou retrograder) un module
pip install nomModule --upgrade pip install nomModule=0.9 --upgrade
pip nous liste les modules installés et leurs versions
$ pip freeze Axiom==0.6.0 BeautifulSoup==3.2.0 Brlapi==0.5.6
on peut générer en une seule commande l'environnement de développement :
pip freeze > requirements.txt
et l'importer sur une autre machine :
pip install -r requirements.txt
Il arrive qu'un module ne soit pas dispo sur pypi, mais on peut récupérer une archive des sources avec un setup.py
, pip peut l'installer (et référencer ce module par le pip freeze
)
pip install -e /path/to/the/module/
Si le site pypi n'est pas disponible, pip possède en interne une liste de miroirs qu'on peut solliciter explicitement (pip les essayera les uns après les autres jusqu'au premier qui soit disponible)
pip install --use-mirrors nomModule
Certain modules, numpy
entre autres, possèdent des extensions en C (pour des raisons de performances) qu'il faut compiler à l'installation. pip sait faire ça, mais le processus peut ne pas aboutir : souvent ces extensions en C nécessitent des dépendances qui ne sont pas en python, et donc pas gérées par pip. Il faut alors regarder du côté du gestionnaire de paquet (aptitude
/yum
) pour installer les lib nécessaires, souvent la version -dev ou -devel pour avoir non seulement les binaires, mais aussi les headers (.h).
Citons par exemple : python-de(vel)
, libxml2-dev(el)
…