Usuwasz pamięć podręczną pipa?

443

Muszę specjalnie zainstalować psycopg2 v2.4.1. Przypadkowo zrobiłem:

 pip install psycopg2

Zamiast:

 pip install psycopg2==2.4.1

To instaluje 2.4.4 zamiast wcześniejszej wersji.

Teraz nawet po zakończeniu pipowania odinstalowuję psycopg2 i próbuję zainstalować ponownie z prawidłową wersją, wygląda na to, że pip ponownie używa pamięci podręcznej, którą pobrał za pierwszym razem.

Jak zmusić pip do wyczyszczenia pamięci podręcznej pobierania i użycia konkretnej wersji, którą włączam do polecenia?

Geuis
źródło
4
Aktualna najbardziej aktualna odpowiedź (opublikowana przez opiekuna pipa) to stackoverflow.com/a/61762308/1931274 .
pradyunsg

Odpowiedzi:

506

Jeśli używasz pip 6.0 lub nowszego, spróbuj dodać --no-cache-diropcję .

Jeśli używasz pipa starszego niż pip 6.0, zaktualizuj go przy pomocy pip install -U pip.

sholsapp
źródło
8
Zajrzałem do ~ / .pip, ale jest to pusty katalog. Twoja wskazówka dotycząca --ignore-install załatwiła sprawę!
Geuis
7
W OSX musiałem usunąć katalogi związane z pipem w$TMPDIR
Bryan P
2
Jeśli używasz virtualenv, być może będziesz musiał usunąć envs / {yourenvsname} / build / {packageinquestion} reż ...
Vajk Hermecz
6
W systemie Windows: widziałem, że katalog buforowania pip znajduje się w ~ \ AppData \ Local \ pip \ cache
Mercury
2
Musisz zrobić python -m pip install -U pipw systemie Windows. (Nie można go zaktualizować z powodu zablokowania pip.exepliku w inny sposób.)
jpmc26
456

Wyczyść katalog pamięci podręcznej, jeśli jest to właściwe dla twojego systemu

Linux i Unix

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

OS X

~/Library/Caches/pip

Windows

%LocalAppData%\pip\Cache
Dr Manhattan
źródło
6
To szalone, że trzy najlepsze odpowiedzi tak naprawdę nie odpowiadają na pytanie, i to jest pierwsza, która to robi.
AmphotericLewisAcid
1
Aktualna najbardziej aktualna odpowiedź (opublikowana przez opiekuna pipa) to stackoverflow.com/a/61762308/1931274 . Najlepszym podejściem jest teraz pip cache purge.
pradyunsg
104

Z dokumentacji na https://pip.pypa.io/en/latest/reference/pip_install.html#caching :

Począwszy od wersji 6.0, pip zapewnia domyślną pamięć podręczną, która działa podobnie do przeglądarki internetowej. Gdy pamięć podręczna jest domyślnie włączona i domyślnie działa prawidłowo, możesz ją wyłączyć i zawsze uzyskiwać dostęp do PyPI, korzystając z tej --no-cache-dir opcji.

dafeda
źródło
2
To właściwa odpowiedź ... link pokazuje również, gdzie pip ukrywa pamięć podręczną w systemach Linux, Windows i OS X.
jasonjwwilliams
3
Aby dodać, jeśli chcesz usunąć „zły” obiekt z pamięci podręcznej, spójrz na stronę, aby znaleźć lokalizację pliku pamięci podręcznej, i „znajdź” naruszający pakiet. Linux to ~ / .cache / pip, Mac to ~ / Library / Caches / pip, itp. Co ciekawe, psycopg2 był również moim pakietem problemowym, ale było tak, ponieważ istniejący pakiet został skompilowany dla innej biblioteki Postgresql, która już nie istnieje mój serwer.
Chris Cogdon
78

pip może zainstalować pakiet ignorując pamięć podręczną, tak jak to

pip --no-cache-dir install scipy

źródło
7
Odpowiedź @ dafeda zawiera te same informacje 4 miesiące temu
Foon
30

Na Ubuntu musiałem usunąć /tmp/pip-build-root.

Jace Browning
źródło
2
Właściwie / tmp / pip-build-% username_that_running_pip%
Alexey Sviridov
2
Na Ubuntu 14 było /tmp/pip_build_root/(uwaga podkreślona)
Emil Stenström
19

(opiekun pip tutaj!)

Od pip 6.0 (z powrotem w 2014 roku!) pip install, pip downloadA pip wheelpolecenia można powiedzieć, aby uniknąć używania pamięci podręcznej z --no-cache-diropcją. (np . pip install --no-cache-dir <package>:)

Od pip 10.0 (w 2018 roku!) pip configDodano polecenie, którego można użyć do skonfigurowania pipa tak, aby zawsze ignorował pamięć podręczną - pip config set global.cache-dir falsekonfiguruje pip, aby nie używał pamięci podręcznej „globalnie” (tj. We wszystkich poleceniach).

Od pip 20.1 pip ma pip cachepolecenie do zarządzania zawartością pamięci podręcznej pip.

  • pip cache purge usuwa wszystkie pliki kół z pamięci podręcznej.
  • pip cache remove matplotlib wybiórczo usuwa pliki związane z matplotlib z pamięci podręcznej.

Podsumowując, pip zapewnia wiele sposobów na dostosowanie sposobu korzystania z pamięci podręcznej:

  • pip install --no-cache-dir <package>: zainstaluj pakiet bez użycia pamięci podręcznej, tylko dla tego uruchomienia.
  • pip config set global.cache-dir false: skonfiguruj pip, aby nie używał pamięci podręcznej „globalnie” (we wszystkich poleceniach)
  • pip cache remove matplotlib: usuwa wszystkie pliki koła związane z matplotlib z pamięci podręcznej pip.
  • pip cache purge: aby usunąć wszystkie pliki z pamięci podręcznej pip.

Konkretny problem „instalowania niewłaściwej wersji z powodu buforowania” wymieniony w pytaniu został naprawiony w pip 1.4 (w 2013 roku!):

Napraw wiele problemów związanych z czyszczeniem i nieużywaniem katalogów kompilacji. (# 413, # 709, # 634, # 602, # 939, # 865, # 948)

pradyunsg
źródło
10

Jeśli chcesz ustawić tę --no-cache-diropcję domyślnie, możesz to zrobić w pip.conf:

[global]
no-cache-dir = false

Lokalizacja pip.confzależy od systemu operacyjnego. Więcej informacji znajduje się w dokumentacji .

Rotareti
źródło
9

Właśnie miałem podobny problem i odkryłem, że jedynym sposobem, aby uzyskać pip do uaktualnienia pakietu, było usunięcie katalogu $PWD/build( %CD%\buildw systemie Windows), który mógł pozostać z poprzednio niedokończonej instalacji lub poprzedniej wersji pip (teraz usuwa buduj katalogi po udanej instalacji).

dhobbs
źródło
6

W archlinux pip cache znajduje się w ~ / .cache / pip, mógłbym rozwiązać problem, usuwając znajdujący się w nim folder http.

eneepo
źródło
6

Na moim komputerze Mac musiałem usunąć katalog pamięci podręcznej ~/Library/Caches/pip/

matlads
źródło
4

W systemie Windows 7 musiałem usunąć %HOMEPATH%/pip.

Jace Browning
źródło
3

Jeśli używasz virtualenv, poszukaj buildkatalogu w katalogu głównym środowiska.

Vajk Hermecz
źródło
3

Musiałem usunąć% TEMP% \ pip-build W systemie Windows 7

Michaił M.
źródło
1
Dzięki + 1. Korzystam również z systemu Windows 7 i znalazłem folder w folderze% TEMP% \ pip. % TEMP% jest zdefiniowany w zmiennych środowiskowych, jeśli ktoś nie jest pewien.
Simon
2

W systemie Mac OS (Mavericks) musiałem usunąć /tmp/pip-build/

Marcelo Soares
źródło
0

Lepszym sposobem na to jest usunięcie pamięci podręcznej i jej odbudowanie. W ten sposób, jeśli zainstalujesz go ponownie dla innych virtualenv, użyje pamięci podręcznej zamiast budować za każdym razem, gdy go instalujesz.

Na przykład, gdy go zainstalujesz, powie, że używa koła z pamięcią podręczną,

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

Po prostu usuń ten i uruchom ponownie instalację.

Izana
źródło
-2

(...) wygląda na to, że pip ponownie używa pamięci podręcznej (...)

Jestem prawie pewien, że tak się nie dzieje. Pip używany (nieprawidłowo) do ponownego użycia katalogu kompilacji, a nie pamięci podręcznej. Zostało to naprawione w wersji 1.4 pip, która została wydana w dniu 2013-07-23.

Piotr Dobrogost
źródło