PIP_DOWNLOAD_CACHE a de sérieux problèmes. Le plus important est qu'il encode le nom d'hôte du téléchargement dans le cache, ce qui rend l'utilisation des miroirs impossible.
La meilleure façon de gérer un cache de téléchargements de pip est de séparer l'étape "télécharger le paquet" de l'étape "installer le paquet". Les fichiers téléchargés sont communément appelés "fichiers sdist" (distributions des sources) et je vais les stocker dans un répertoire $SDIST_CACHE.
Les deux étapes finissent par être :
pip install --no-install --use-mirrors -I --download=$SDIST_CACHE <package name>
Ce qui va télécharger le paquet et le placer dans le répertoire pointé par $SDIST_CACHE. Il n'installera pas le paquet. Et ensuite vous exécutez :
pip install --find-links=file://$SDIST_CACHE --no-index --index-url=file:///dev/null <package name>
Pour installer le paquet dans votre environnement virtuel. Idéalement, $SDIST_CACHE devrait être validé sous votre contrôle de source. Lors du déploiement en production, vous n'exécuterez que la deuxième commande pip pour installer les paquets sans les télécharger.
1 votes
Notez qu'à partir de pip 6.0 (2014-12-22), pip met en cache par défaut. Voir pip.pypa.io/en/stable/reference/pip_install.html#caching pour les détails.
0 votes
Cela ne réduit pas seulement le temps de téléchargement de la bande passante, cela peut aussi éliminer le temps passé à parcourir l'index PyPI pour vérifier les versions disponibles des paquets, et si vous mettez en cache des roues, cela peut éliminer le temps passé à construire des roues pour des paquets qui ne les fournissent pas. Cela représente un gain de vitesse très important.