Removendo o cache do pip?

443

Preciso instalar o psycopg2 v2.4.1 especificamente. Eu acidentalmente fiz:

 pip install psycopg2

Ao invés de:

 pip install psycopg2==2.4.1

Isso instala o 2.4.4 em vez da versão anterior.

Agora, mesmo depois de desinstalar o psycopg2 e tentar reinstalar com a versão correta, parece que o pip está reutilizando o cache baixado pela primeira vez.

Como forçar o pip a limpar seu cache de download e usar a versão específica que estou incluindo no comando?

Geuis
fonte
4
A resposta atual mais atualizada (publicada por um mantenedor de pip) é stackoverflow.com/a/61762308/1931274 .
pradyunsg

Respostas:

507

Se estiver usando pip 6.0 ou mais recente, tente adicionar a --no-cache-diropção .

Se estiver usando o pip mais antigo que o 6.0, atualize-o com pip install -U pip.

sholsapp
fonte
8
Eu olhei em ~ / .pip, mas é um diretório vazio. Sua dica sobre --ignore-installed fez o truque!
Geuis 01/03/12
7
No OSX, eu tive que excluir o pip diretórios relacionados no$TMPDIR
Bryan P
2
Se usar virtualenv você pode ter que apagar envs / {yourenvsname} / build / {} packageinquestion dir ...
Vajk Hermecz
6
Em janelas: Eu vi diretório pip caching está em ~ \ AppData \ Local \ pip \ cache
Mercury
2
Você tem que fazer python -m pip install -U pipno Windows. (Ele não pode atualizar devido ao bloqueio do pip.exearquivo de outra forma.)
jpmc26
456

Limpe o diretório de cache onde apropriado para o seu sistema

Linux e Unix

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

OS X

~/Library/Caches/pip

janelas

%LocalAppData%\pip\Cache
Dr. Manhattan
fonte
6
É uma loucura que as três principais respostas não respondam à pergunta, e essa é a primeira.
AmphotericLewisAcid
1
A resposta atual mais atualizada (publicada por um mantenedor de pip) é stackoverflow.com/a/61762308/1931274 . A melhor abordagem agora é pip cache purge.
pradyunsg
104

Da documentação em https://pip.pypa.io/en/latest/reference/pip_install.html#caching :

A partir da v6.0, o pip fornece um cache padrão que funciona de maneira semelhante à de um navegador da web. Enquanto o cache está ativado por padrão e é projetado para fazer a coisa certa por padrão, você pode desativar o cache e sempre acessar o PyPI utilizando a --no-cache-dir opção

dafeda
fonte
2
Esta é a resposta certa ... o link também mostra onde pip esconde o cache em Linux, Windows e OS X.
jasonjwwilliams
3
E, para adicionar, se você deseja remover o objeto "ruim" do cache, consulte a página para encontrar o local do arquivo em cache e "encontre" o pacote incorreto. Linux é ~ / .cache / pip, Mac é ~ / Library / Caches / pip, etc. Curiosamente, psycopg2 também foi meu pacote de problemas, mas foi porque o pacote existente foi compilado para uma biblioteca Postgresql diferente, que não existe mais no meu servidor
22816 Chris Cogdon
78

O pip pode instalar um pacote ignorando o cache, como este

pip --no-cache-dir install scipy
Yihe
fonte
7
A resposta de @ dafeda fornece as mesmas informações 4 months ago
Foon
30

No Ubuntu, eu tive que excluir /tmp/pip-build-root.

Jace Browning
fonte
2
Na verdade, / tmp / pip-build-% username_that_running_pip% #
Alexey Sviridov
2
No Ubuntu 14 era /tmp/pip_build_root/(sublinhados nota)
Emil Stenström
18

(mantenedor de pip aqui!)

Desde pip 6.0 (de volta em 2014!), pip install, pip downloadE pip wheelos comandos podem ser dito para evitar o uso do cache com a --no-cache-diropção. (por exemplo pip install --no-cache-dir <package>:)

Desde o pip 10.0 (em 2018!), Um pip configcomando foi adicionado, que pode ser usado para configurar o pip para sempre ignorar o cache - pip config set global.cache-dir falseconfigura o pip para não usar o cache "globalmente" (ou seja, em todos os comandos).

Desde o pip 20.1, o pip possui um pip cachecomando para gerenciar o conteúdo do cache do pip.

  • pip cache purge remove todos os arquivos de roda no cache.
  • pip cache remove matplotlib remove seletivamente os arquivos relacionados a um matplotlib do cache.

Em resumo, o pip fornece várias maneiras de ajustar como ele usa o cache:

  • pip install --no-cache-dir <package>: instale um pacote sem usar o cache, apenas para esta execução.
  • pip config set global.cache-dir false: configure o pip para não usar o cache "globalmente" (em todos os comandos)
  • pip cache remove matplotlib: remove todos os arquivos de roda relacionados ao matplotlib do cache do pip.
  • pip cache purge: para limpar todos os arquivos do cache do pip.

O problema específico de "instalar a versão incorreta devido ao armazenamento em cache" mencionado na pergunta foi corrigido no pip 1.4 (em 2013!):

Corrija vários problemas relacionados à limpeza e não reutilização de diretórios de construção. (# 413, # 709, # 634, # 602, # 939, # 865, # 948)

pradyunsg
fonte
10

Se você deseja definir a --no-cache-diropção por padrão, pode colocar isso em pip.conf:

[global]
no-cache-dir = false

A localização de pip.confdepende do seu sistema operacional. Veja a documentação para mais informações.

Rotareti
fonte
9

Eu apenas tive um problema semelhante e descobri que a única maneira de obter o pip para atualizar o pacote era excluir o diretório $PWD/build( %CD%\buildno Windows) que poderia ter sobrado de uma instalação anteriormente inacabada ou de uma versão anterior do pip (agora exclui o diretório criar diretórios após uma instalação bem-sucedida).

dhobbs
fonte
6

No archlinux, o cache do pip está localizado em ~ / .cache / pip, eu poderia resolver meu problema removendo a pasta http dentro dele.

eneepo
fonte
6

No meu mac, tive que remover o diretório de cache ~/Library/Caches/pip/

matlads
fonte
4

No Windows 7, tive que excluir %HOMEPATH%/pip.

Jace Browning
fonte
3

Se estiver usando o virtualenv, procure o builddiretório na raiz do seu ambiente.

Vajk Hermecz
fonte
3

Eu tive que excluir% TEMP% \ pip-build No Windows 7

Mikhail M
fonte
1
Obrigado + 1. Também estou usando o Windows 7 e encontrei a pasta na minha pasta% TEMP% \ pip. O% TEMP% é definido nas suas variáveis ​​ambientais se alguém não tiver certeza.
Simon
2

No Mac OS (Mavericks), tive que excluir /tmp/pip-build/

Marcelo Soares
fonte
0

A melhor maneira de fazer isso é excluir o cache e reconstruí-lo. Dessa forma, se você instalá-lo novamente para outro virtualenv, ele usará o cache em vez de criar toda vez que o instalar.

Por exemplo, quando você o instala, ele diz que usa roda em cache,

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

Apenas exclua esse e reinicie sua instalação.

Izana
fonte
-2

(...) parece que o pip está reutilizando o cache (...)

Tenho certeza de que não é isso que está acontecendo. O Pip costumava (incorretamente) reutilizar o diretório de compilação, não o cache. Isso foi corrigido na versão 1.4 do pip, lançada em 23/07/2013.

Piotr Dobrogost
fonte