web-dev-qa-db-fra.com

Comment mettre en cache les packages PIP téléchargés

Comment empêchez-vous PIP de télécharger à nouveau les packages précédemment téléchargés? Je teste l'installation de matplotlib, un package de 11 Mo qui dépend de plusieurs packages spécifiques à la distribution. Chaque fois que je lance pip install matplotlib, il retélécharge matplotlib. Comment puis-je arrêter cela?

60
Cerin

Vous pouvez utiliser une variable d'environnement spécifique PIP_DOWNLOAD_CACHE et la faire pointer vers un répertoire où vos packages seront stockés. S'ils doivent être réinstallés, ils seront extraits de ce répertoire.

Il semble également y avoir une option supplémentaire pour PIP pip --download-cache qui devrait faire quelque chose de similaire, mais je ne l'ai jamais essayé moi-même. Pour votre exemple, pour éviter de retélécharger matplotlib à chaque fois, vous devez procéder comme suit:

pip install --download-cache /path/to/pip/cache matplotlib

Est-ce que ça répond à votre question?

56
Charles Menguy

Pour les nouvelles versions de Pip:

Les nouvelles versions de Pip par défaut mettent désormais en cache les téléchargements. Consultez cette documentation:

https://pip.pypa.io/en/stable/reference/pip_install/#caching

Pour les anciennes versions de Pip:

Créez un fichier de configuration nommé ~/.pip/pip.conf, et ajoutez le contenu suivant:

[global]
download_cache = ~/.cache/pip

En une seule commande:

printf '[global]\ndownload_cache = ~/.cache/pip\n' >> ~/.pip/pip.conf
110
Flimm

Vous pourriez

# download and extract package to build path
pip install --no-install matplotlib

# the build path could be found by 
pip install --help|grep Unpack\ packages\ into -A 2

# then rm pip-delete-this-directory.txt inside the build path
# this prevent pip from removing package from the build directory after install
# you could check the content of the file
rm build/pip-delete-this-directory.txt

# from now on you could install matplotlib quickly
# this uses single build directory 
# and can speed up compiling by caching intermediate objects.
pip install --no-download matplotlib

Vous pouvez également télécharger manuellement le package

pip install -d dir_for_packages matplotlib

Installez-le ensuite avec un-tar et python setup install plus tard.

Le pip install --download-cache fonctionne de manière similaire avec une vérification supplémentaire: il recherche d'abord la version la plus récente ou spécifiée du package cible à partir du Web, si la recherche a abouti et s'il y a un package mis en cache dans le répertoire spécifié par download-cache, le package mis en cache sera utilisé au lieu du téléchargement. Par exemple,

pip install --download-cache . pymongo

téléchargera le paquet pymongo dans le répertoire courant:

http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz.content-type
8
okm