Como faço para detectar e remover pacotes do Python instalados via pip?

58

Eu acidentalmente instalei pacotes Python em meu sistema usando pip em vez de apt-get . Eu fiz isso de duas maneiras:

  • usando uma versão mais antiga do virtualenv, esqueci de anexar --no-site-packages ao criar o virtualenv - depois disso, quando chamei pip install , os pacotes do Python instalados no sistema, em vez do virtualenv
  • em um virtualenv de configuração correta, digitei sudo pip install somepackage - o sudo instalado no sistema em vez do virtualenv

Por acaso eu notei isso porque digitei pip freeze fora de um virtualenv e vi alguns pacotes do Python listados que não deveriam estar lá. Então agora a minha pergunta é:

  • como identifico todos os pacotes Python que foram instalados erroneamente no sistema (isto é, pacotes Python que aparecem na lista pip freeze , mas não foram instalados com apt-get )?
  • como faço para removê-los?
por d3vid 08.08.2012 / 10:48

5 respostas

51

O Ubuntu Oneiric (e também espero versões mais recentes) instala pacotes pip para /usr/local/lib/python2.7/dist-packages e apt packages para /usr/lib/python2.7/dist-packages . Então, basta verificar o diretório antigo e sudo pip uninstall de cada pacote que você encontrar lá.

    
por Capi Etheriel 22.02.2013 / 13:48
9

Pip atualmente ignora os comandos de desinstalação que tentam desinstalar algo pertencente ao sistema operacional. Não é um erro, como acontece com um pacote ausente. Então, agora você pode desinstalar com o seguinte processo:

pip freeze > dump.txt

Edite o arquivo despejado para remover qualquer linha de -e "instalação editável", tudo após o sinal == ( %s;==.*;;g no vim), troque as novas linhas por espaços ( %s;\n; ;g no vim). Então você pode desinstalar todos os pacotes não pertencentes com

cat dump.txt | xargs sudo pip uninstall -y

Eu tive que fazer este procedimento duas vezes, porque alguns pacotes foram instalados em ~/.local/lib também.

    
por Henry Schreiner 26.10.2015 / 15:54
6

AFAIK sudo pip install será instalado em /usr/local/lib/pythonVERSION/dist-packages . Você precisa executar sudo pip uninstall para desinstalar pacotes em todo o sistema. Parece que pip freeze procura metadados do pacote e listará qualquer coisa instalada, ou seja, tanto do pip como do apt-get fora do virtualenvs. Existe a opção -l dentro do ambiente virtual para listar os pacotes aplicáveis apenas a esse ambiente virtual, mas parece ser o caso padrão também dentro do ambiente virtual. Eu acho que você pode simplesmente excluir pacotes relacionados em /usr/local/lib/pythonVERSION/dist-packages também, mas não é um método muito conveniente, eu acho.

    
por sagarchalise 08.08.2012 / 13:01
5

Para remover um pacote instalado via pip, basta pressionar Ctrl + Alt + T no seu teclado para abrir o Terminal. Quando se abre, execute o comando abaixo.

pip uninstall < package-name >

Para procurar por pacotes

pip search <package you want to search for>

Para determinar quais pacotes Python foram instalados pelo pip, pelo comando freeze , que fornecerá uma lista de pacotes instalados e suas versões. Sugiro remover todas as instâncias e reinstalar usando o comando sudo apt-get

sudo apt-get install python3
    
por Mitch 08.08.2012 / 11:13
-1

Isso tem algo a ver com o Homebrew. Eu não tive problemas com o pyodbc no meu Mac Air até instalar o Homebrew e usá-lo para algumas coisas. Eu encontrei este tópico no github que termina em uma solução que funcionou para mim.

"Se você tem o Homebrew, basta instalar os cabeçalhos ODBC:

$ brew install unixodbc

e execute "pip install pyodbc" novamente. "

Isso 100% resolveu o problema para mim e levou apenas um momento. Dê uma chance.

    
por Pogo 04.07.2017 / 18:15