Suppression du cache de pip?

443

J'ai besoin d'installer spécifiquement psycopg2 v2.4.1. J'ai accidentellement fait:

 pip install psycopg2

Au lieu de:

 pip install psycopg2==2.4.1

Cela installe 2.4.4 au lieu de la version précédente.

Maintenant, même après avoir désinstallé psycopg2 et tenté de réinstaller avec la bonne version, il semble que pip réutilise le cache qu'il a téléchargé la première fois.

Comment puis-je forcer pip à vider son cache de téléchargement et utiliser la version spécifique que j'inclus dans la commande?

Geuis
la source
4
La réponse la plus récente (publiée par un mainteneur de pip) est stackoverflow.com/a/61762308/1931274 .
pradyunsg

Réponses:

507

Si vous utilisez pip 6.0 ou plus récent, essayez d'ajouter l' --no-cache-diroption .

Si vous utilisez pip antérieur à pip 6.0, mettez-le à niveau avec pip install -U pip.

sholsapp
la source
8
J'ai regardé dans ~ / .pip mais c'est un répertoire vide. Votre conseil sur --ignore-installed a fait l'affaire!
Geuis
7
Sur OSX, j'ai dû supprimer les répertoires liés à pip dans$TMPDIR
Bryan P
2
Si vous utilisez virtualenv, vous devrez peut-être supprimer envs / {yourenvsname} / build / {packageinquestion} dir ...
Vajk Hermecz
6
Sous Windows: j'ai vu que le répertoire de mise en cache de pip se trouve dans ~ \ AppData \ Local \ pip \ cache
Mercury
2
Vous devez faire python -m pip install -U pipsur Windows. (Il ne peut pas être mis à niveau en raison du verrouillage du pip.exefichier sinon.)
jpmc26
456

Effacez le répertoire de cache le cas échéant pour votre système

Linux et Unix

~/.cache/pip  # and it respects the XDG_CACHE_HOME directory.

OS X

~/Library/Caches/pip

les fenêtres

%LocalAppData%\pip\Cache
Dr Manhattan
la source
6
Il est fou que les trois premières réponses ne répondent pas réellement à la question, et c'est la première qui le fait.
AmphotericLewisAcid
1
La réponse la plus récente (publiée par un mainteneur de pip) est stackoverflow.com/a/61762308/1931274 . La meilleure approche est maintenant pip cache purge.
pradyunsg
104

De la documentation à https://pip.pypa.io/en/latest/reference/pip_install.html#caching :

À partir de la version 6.0, pip fournit un cache activé par défaut qui fonctionne de manière similaire à celui d'un navigateur Web. Alors que le cache est activé par défaut et est conçu, faites ce qu'il faut par défaut, vous pouvez désactiver le cache et toujours accéder à PyPI en utilisant l' --no-cache-dir option.

dafeda
la source
2
C'est la bonne réponse ... le lien montre également où pip cache le cache sous Linux, Windows et OS X.
jasonjwwilliams
3
Et pour ajouter, si vous souhaitez supprimer le "mauvais" objet de votre cache, consultez la page pour trouver l'emplacement du fichier cache et "trouvez" le package incriminé. Linux est ~ / .cache / pip, Mac est ~ / Library / Caches / pip, etc. Fait intéressant, psycopg2 était également mon package problématique, mais c'était parce que le package existant était compilé pour une autre bibliothèque Postgresql, qui n'existe plus sur mon serveur.
Chris Cogdon
78

pip peut installer un paquet en ignorant le cache, comme ceci

pip --no-cache-dir install scipy
Yihe
la source
7
La réponse de @ dafeda fournit les mêmes informations il y a 4 mois
Foon
30

Sur Ubuntu, j'ai dû supprimer /tmp/pip-build-root.

Jace Browning
la source
2
En fait / tmp / pip-build-% username_that_running_pip%
Alexey Sviridov
2
Sur Ubuntu 14 c'était /tmp/pip_build_root/(notez les soulignés)
Emil Stenström
19

(mainteneur de pip ici!)

Depuis pip 6.0 (retour en 2014!), pip install, pip downloadEt les pip wheelcommandes peuvent être dit d'éviter d' utiliser le cache avec l' --no-cache-diroption. (par exemple pip install --no-cache-dir <package>)

Depuis pip 10.0 (en 2018!), Une pip configcommande a été ajoutée, qui peut être utilisée pour configurer pip pour toujours ignorer le cache - pip config set global.cache-dir falseconfigure pip pour ne pas utiliser le cache "globalement" (c'est-à-dire dans toutes les commandes).

Depuis pip 20.1, pip a une pip cachecommande pour gérer le contenu du cache de pip.

  • pip cache purge supprime tous les fichiers de roue dans le cache.
  • pip cache remove matplotlib supprime sélectivement les fichiers liés à un matplotlib du cache.

En résumé, pip fournit de nombreuses façons de modifier la façon dont il utilise le cache:

  • pip install --no-cache-dir <package>: installez un package sans utiliser le cache, pour cette seule exécution.
  • pip config set global.cache-dir false: configure pip pour ne pas utiliser le cache "globalement" (dans toutes les commandes)
  • pip cache remove matplotlib: supprime tous les fichiers de roue liés à matplotlib du cache de pip.
  • pip cache purge: pour effacer tous les fichiers du cache de pip.

Le problème spécifique de «l'installation de la mauvaise version en raison de la mise en cache» mentionné dans la question a été corrigé dans pip 1.4 (en 2013!):

Correction d'un certain nombre de problèmes liés au nettoyage et à la non-réutilisation des répertoires de construction. (# 413, # 709, # 634, # 602, # 939, # 865, # 948)

pradyunsg
la source
J'ai pip 20.1.1 mais quand j'essaie de purger le cache de pip, j'obtiens la prochaine erreur: ERROR: No matching packagesmais j'ai déjà installé beaucoup de packages différents
Mikhail_Sam
10

Si vous souhaitez définir l' --no-cache-diroption par défaut, vous pouvez la mettre dans pip.conf:

[global]
no-cache-dir = false

L'emplacement de pip.confdépend de votre système d'exploitation. Voir la documentation pour plus d'informations.

Rotareti
la source
9

J'ai juste eu un problème similaire et j'ai constaté que la seule façon d'obtenir pip pour mettre à niveau le package était de supprimer le répertoire $PWD/build( %CD%\buildsous Windows) qui aurait pu être laissé d'une installation inachevée ou d'une version précédente de pip (il supprime maintenant le créer des répertoires après une installation réussie).

dhobbs
la source
6

Sur le cache de pip archlinux est situé à ~ / .cache / pip, je pourrais résoudre mon problème en supprimant le dossier http à l'intérieur.

eneepo
la source
6

Sur mon mac, j'ai dû supprimer le répertoire cache ~/Library/Caches/pip/

matlads
la source
4

Sur Windows 7, je devais supprimer %HOMEPATH%/pip.

Jace Browning
la source
3

Si vous utilisez virtualenv, recherchez le buildrépertoire sous la racine de votre environnement.

Vajk Hermecz
la source
3

J'ai dû supprimer% TEMP% \ pip-build sous Windows 7

Mikhail M
la source
1
Merci + 1. J'utilise également Windows 7 et j'ai trouvé le dossier sous mon dossier% TEMP% \ pip. Le% TEMP% est défini dans vos variables d'environnement en cas de doute.
Simon
2

Sur Mac OS (Mavericks), je devais supprimer /tmp/pip-build/

Marcelo Soares
la source
0

Une meilleure façon de le faire est de supprimer le cache et de le reconstruire. De cette façon, si vous l'installez à nouveau pour d'autres virtualenv, il utilisera le cache au lieu de construire à chaque fois que vous l'installerez.

Par exemple, lorsque vous l'installez, il indique qu'il utilise une roue en cache,

Processing <some_prefix>/Library/Caches/pip/wheels/d0/c4/e4/e49fd07bca8dda00dd6b4bbc606aa05a25aacb00d45747a47a/horovod-0.19.3-cp37-cp37m-macosx_10_9_x86_64.wh

Supprimez-le et redémarrez votre installation.

Izana
la source
-2

(...) il semble que pip réutilise le cache (...)

Je suis sûr que ce n'est pas ce qui se passe. Pip utilisé pour (à tort) réutiliser le répertoire de construction et non le cache. Cela a été corrigé dans la version 1.4 de pip qui a été publiée le 2013-07-23.

Piotr Dobrogost
la source