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?


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.


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

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


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

7
A resposta de @ dafeda fornece as mesmas informações 4 months ago
Foon


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)


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.


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


6

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


6

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




3

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


3

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


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


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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.