Pip'in önbelleği kaldırılsın mı?


443

Özellikle psycopg2 v2.4.1 yüklemem gerekiyor. Yanlışlıkla yaptım:

 pip install psycopg2

Onun yerine:

 pip install psycopg2==2.4.1

Bu, önceki sürüm yerine 2.4.4'ü yükler.

Psycopg2'yi kaldırdıktan ve doğru sürümle yeniden yüklemeyi denedikten sonra bile, pip ilk kez indirdiği önbelleği yeniden kullanıyor gibi görünüyor.

Pip'i indirme önbelleğini temizlemeye ve komuta dahil ettiğim belirli sürümü kullanmaya nasıl zorlayabilirim?


4
Mevcut en güncel cevap (bir pip bakımcısı tarafından gönderilen) stackoverflow.com/a/61762308/1931274 .
pradyunsg

Yanıtlar:


506

Pip 6.0 veya daha yenisini kullanıyorsanız, --no-cache-dir seçeneği .

Pip 6.0'dan daha eski pip kullanıyorsanız, ile yükseltin pip install -U pip.


8
~ / .Pip içine baktım ama boş bir dizin. Sadece yüklü olarak ipucunuz hile yaptı!
Geuis

7
OSX'te, pip ile ilgili dizinleri silmek zorunda kaldım$TMPDIR
Bryan P

2
Virtualenv kullanıyorsanız envs / {yourenvsname} / build / {packageinquestion}
dizinini silmeniz gerekebilir

6
Windows: Pip önbellek dizini ~ \ AppData \ Local \ pip \ cache
Mercury

2
python -m pip install -U pipWindows üzerinde yapmalısınız . ( pip.exeDosyanın kilitlenmesi nedeniyle yükseltilemez .)
jpmc26

456

Sisteminiz için uygun olan yerlerde önbellek dizinini temizleyin

Linux ve Unix

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

OS X

~/Library/Caches/pip

pencereler

%LocalAppData%\pip\Cache

6
İlk üç cevap aslında soruyu cevaplamıyor ve bu ilk cevap.
AmphotericLewisAcid

1
Mevcut en güncel cevap (bir pip bakımcısı tarafından gönderilen) stackoverflow.com/a/61762308/1931274 . Şimdi en iyi yaklaşım pip cache purge.
pradyunsg

104

Https://pip.pypa.io/en/latest/reference/pip_install.html#caching adresindeki belgelerden :

V6.0 ile başlayarak pip, web tarayıcısınınkine benzer şekilde çalışan varsayılan bir önbellek sağlar. Önbellek varsayılan olarak açıkken ve varsayılan olarak doğru olanı yapmak üzere tasarlanmış olsa da, önbelleği devre dışı bırakabilir ve --no-cache-dir seçeneği kullanarak her zaman PyPI'ye erişebilirsiniz .


2
Bu doğru cevap ... bağlantı ayrıca pip'in Linux, Windows ve OS X'te önbelleği nerede sakladığını gösterir.
jasonjwwilliams

3
Eklemek için, "kötü" nesneyi önbelleğinizden kaldırmak istiyorsanız, önbellek dosyasının yerini bulmak için sayfaya bakın ve rahatsız edici paketi "bulun". Linux ~ / .cache / pip, Mac ~ / Library / Caches / pip, vb. sunucum.
Chris Cogdon

78

pip, önbelleği yoksayarak böyle bir paket yükleyebilir

pip --no-cache-dir install scipy

7
@ dafeda'nın cevabı aynı bilgileri 4 ay önce sağlar
Foon


19

(pip bakıcısı burada!)

Pip 6.0 (arka 2014 yılında!) Beri pip install, pip downloadve pip wheelkomutlar ile önbelleği kullanmaktan kaçınmak için söylendi edilebilir --no-cache-dirseçenek. (örneğin pip install --no-cache-dir <package>)

Pip 10.0'dan (2018'de geri!) Beri pip'i pip configönbelleği her zaman yoksaymak üzere yapılandırmak için kullanılabilen bir komut eklendi - pip config set global.cache-dir falsepip'i önbelleği "global" olarak kullanmayacak şekilde yapılandırır (yani tüm komutlarda).

Pip 20.1'den beri pip'in pip cacheönbelleğinin içeriğini yönetme komutu vardır .

  • pip cache purge önbellekteki tüm tekerlek dosyalarını kaldırır.
  • pip cache remove matplotlib matplotlib ile ilgili dosyaları seçerek önbellekten siler.

Özetle, pip önbelleği nasıl kullandığını değiştirmek için birçok yol sağlar:

  • pip install --no-cache-dir <package>: sadece bu çalışma için önbellek kullanmadan bir paket kurun.
  • pip config set global.cache-dir false: pip'i "global" önbelleğini kullanmayacak şekilde yapılandır (tüm komutlarda)
  • pip cache remove matplotlib: matplotlib ile ilgili tüm tekerlek dosyalarını pip'in önbelleğinden kaldırır.
  • pip cache purge: tüm dosyaları pip'in önbelleğinden temizlemek için.

Soruda bahsedilen "önbelleğe alma nedeniyle yanlış sürümün yüklenmesi" sorunu 1.4 numaralı makalede düzeltildi (2013'te geri döndü!):

Derleme dizinlerini temizleme ve yeniden kullanmama ile ilgili bir dizi sorunu düzeltin. (# 413, # 709, # 634, # 602, # 939, # 865, # 948)


10

--no-cache-dirSeçeneği varsayılan olarak ayarlamak isterseniz, bunu aşağıdakilere koyabilirsiniz pip.conf:

[global]
no-cache-dir = false

Konumu pip.confişletim sisteminize bağlıdır. Daha fazla bilgi için belgelere bakın .


9

Ben sadece benzer bir sorun vardı ve paketi yükseltmek için pip almak için tek yol daha önce bitmemiş bir yükleme veya pip önceki bir sürümü (artık silinir) $PWD/build( %CD%\buildWindows üzerinde) dizini silmek olduğunu bulundu başarılı bir kurulumdan sonra dizin oluşturun).


6

Archlinux pip cache ~ / .cache / pip adresinde yer alıyor, içindeki http klasörünü kaldırarak sorunumu çözebilirim.


6

Mac bilgisayarımda önbellek dizinini kaldırmak zorunda kaldım ~/Library/Caches/pip/




3

Virtualenv kullanıyorsanız, buildortam kökünüzün altındaki dizini arayın .


3

Windows 7'de% TEMP% \ pip-build'i silmek zorunda kaldım


1
Teşekkür + 1. Ayrıca Windows 7 kullanıyorum ve% TEMP% \ pip klasörümün altındaki klasörü buldum. % TEMP%, emin değilseniz çevresel değişkenlerinizde tanımlanır.
Simon


0

Bunu yapmanın daha iyi bir yolu, önbelleği silmek ve yeniden oluşturmaktır. Bu şekilde, diğer virtualenv için tekrar yüklerseniz, her yüklediğinizde önbellek oluşturmak yerine önbelleği kullanır.

Örneğin, taktığınızda, önbelleğe alınmış tekerlek kullandığını,

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

Bunu silin ve yüklemenizi yeniden başlatın.


-2

(...) pip'in önbelleği tekrar kullandığını gösteriyor (...)

Eminim ki olan bu değil. Oluşturma dizini önbelleği değil yeniden kullanmak için (yanlış) pip. Bu, 2013-07-23'te yayınlanan pip'in 1.4 sürümünde düzeltildi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.