Quelques astuces pour être productif avec pip
Si vous installez beaucoup de fois les mêmes paquets, par exemple dans de nombreux
virtualenvs j’installe toujours ipython + ipdb + requests + clize + peewee, les télécharger à
chaque fois est une perte de temps. On peut demander à pip de mettre en cache les paquets
déjà installés, pour de futures installations:
export PIP_DOWNLOAD_CACHE='~/.pip/cache'; dans le .bashrc
Pour les windowsiens, je ne sais pas du tout où mettre ça…
Sachez cependant que le cache ne dispense pas d’être connecté à Internet.
Si une bibliothèque n’est pas encore sur pypi, pip est capable, pourvu que le code source
vienne avec un fichier setup.py, de l’installer depuis un fichier local, une URL, ou même un
simple repo git. Donc si vous trouvez une lib chouette sur github, on peut l’installer ainsi:
pip install git+git://github.com/sametmax/0bin.git
Et elle sera même référencée par le pip freeze !
Remarquez qu’il faut avoir Git installé, et que le protocole doit être changé pour git+git.
Parfois, pypi est indisponible: un problème sur le site, un problème de dns, un problème de
votre FAI… Dans ce cas là on est un peu désemparé. Heureusement, pip permet aussi de faire
un fallback sur des miroirs:
pip install --use-mirrors requests
Dans ce cas pip essayera de trouver le paquet sur une liste de sites miroirs de pypi qu’il
possède en interne. Il va les essayer un par un jusqu’à en trouver un de disponible.
Dans le cas les plus extrêmes, certains vont jusqu’à créer leur propre miroir en local. Mais
c’est un article à part entière.
Installer des bibliothèques avec des extensions en C
Les bibliothèques avec des extensions en C sont très courantes dans les domaines qui ont
besoin de performances: drivers de base de données (mysql-python), calculs scientifiques
(numpy), parsing (lxml), cryptographie (pycrypto), etc.
Pip ne fonctionnera que partiellement pour installer ces libs: il devra en effet lancer la
compilation de l’extension. Bien que le processus soit automatique et bien fait, il arrive
souvent qu’il manque des dépendances.
Pour ce genre de lib, soit vous utilisez un paquet tout fait (*.deb, *.exe, *.rpm, etc.), soit
vous tentez d’installer les dépendances.