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?


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.


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

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.


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

7
La réponse de @ dafeda fournit les mêmes informations il y a 4 mois
Foon


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)


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.


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).


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.


6

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




3

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


3

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


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


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.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.