Como removo os pacotes instalados com o easy_install do Python?

704

O Python's easy_installtorna a instalação de novos pacotes extremamente conveniente. No entanto, até onde sei, ele não implementa os outros recursos comuns de um gerenciador de dependências - listando e removendo pacotes instalados.

Qual é a melhor maneira de descobrir o que está instalado e qual é a maneira preferida de remover pacotes instalados? Existem arquivos que precisam ser atualizados se eu remover pacotes manualmente (por exemplo, por rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.eggou similar)?

ire_and_curses
fonte
67
este post tem quase 2 anos no momento em que estou escrevendo este comentário. O pip agora substitui efetivamente o easy_install e pode remover de forma adequada e limpa os pacotes (ovos incluídos) instalados por este último. Certifique-se de votar novamente na resposta, sugerindo-a mais adiante.
Michael Ekoka
53
O paradoxo de que algo chamado "easy_install" - não um: ter uma contrapartida easy_uninstall, nem b: se preocuparam em mencionar como um pode fazê-lo no --help- confunde a minha mente / _infuriates minha alma / entristece meu coração .
Alex Gray
13
@ Mike e se eu estiver tentando desinstalar o pip? (:
mccc

Respostas:

621

O pip , uma alternativa ao setuptools / easy_install, fornece um comando "uninstall".

Instale o pip de acordo com as instruções de instalação :

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

Em seguida, você pode usar pip uninstallpara remover os pacotes instalados com oeasy_install

lunaryorn
fonte
25
Se você está tendo problemas para desinstalar módulos com pip, certifique-se a sua instalação pip em si é atualizado: pip instalar -U pip # isso é uma letra maiúscula L
Michael Ekoka
4
O pip trabalhou para mim para desinstalar um pacote instalado easy_install. Eu tive que executar 'pip uninstall <package>' várias vezes para remover todas as versões do pacote. Portanto, tenha isso em mente. Ele até removeu um pacote instalado 'develop', que foi uma bagunça como resultado.
DragonFax 29/07
2
Mas Como você excluir pacote não-ativa
CrazyGeek
7
Usei o easy_install para instalar o pip e desinstalar as instalações do easy_install.
2
A resposta diz "instalar pip", mas, na verdade, o pip parece ter sido incorporado ao Python moderno .
Edward
188

Para desinstalar um, .eggvocê precisa rm -rfdo ovo (pode ser um diretório) e remova a linha correspondente desite-packages/easy-install.pth

joeforker
fonte
18
O pipgerenciador de pacotes mais recente inclui um recurso de desinstalação.
joeforker
Acho pip melhor do que desinstalar, porque o pip instala a partir de fontes. Se você tem como me uma nova marca de 64 bits Win7, ele vai salvar o seu dia :)
daitangio
6
Alguns usos estão presos a uma versão antiga do pip que não possui a opção de desinstalação, portanto, essa resposta ainda vale a pena.
Mark Pitchless
5
Provavelmente, vale a pena mencionar que esse método pode deixar o sistema disperso data_filese scripts(e possivelmente outras categorias de arquivos). O ovo do EGG-INFO/SOURCES.txtcontém uma lista de todos os packagearquivos e sources, mas não data_files, que pode ser instalado em qualquer diretório arbitrário no seu sistema ...
Alex Leach
O pip nem sempre remove tudo o que o easy_install instala. Aqui está uma pequena experiência que aconteceu comigo em que o pip não conseguiu desinstalar um dos meus módulos. Eu tive que remover a linha correspondente do site-packages / easy-install.pth para desinstalá-la completamente.
ychaouche
158

Primeiro você precisa executar este comando:

$ easy_install -m [PACKAGE]

Remove todas as dependências do pacote.

Em seguida, remova o arquivo egg desse pacote:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg
PythonDev
fonte
1
mais documentos aqui: peak.telecommunity.com/DevCenter/…
GiDo 17/02/2013
-mnão é o comando easy_install adequado para remover tudo o que sei, mas esta resposta fornece a localização crucial dos pacotes easy_install que outras respostas não. um rm -rf /usr/local/lib/python*antes de instalar pip é o caminho a percorrer parece-me
fuzzyTew
55

Toda a informação está em outras respostas, mas nenhuma resume ambos os seus pedidos ou parecem fazer as coisas desnecessariamente complexa:

  • Para suas necessidades de remoção, use:

    pip uninstall <package>

    (instale usando easy_install pip)

  • Para suas necessidades de 'lista de pacotes instalados', use:

    pip freeze

    Ou:

    yolk -l

    que pode gerar mais detalhes do pacote.

    (Instalar via easy_install yolkou pip install yolk)

Rabarberski
fonte
Após a execução yolk -l, vejo que tenho pacotes duplicados como "scipy -0.11.0 -desenvolvimento não ativo" e "scipy -0.14.0 ... -desenvolvimento ativo". Como posso desinstalar esses pacotes de desenvolvimento não ativos?
bobbyjoe93
2
Isso é bom, exceto que eu quero desinstalar o pip que foi instalado pelo easy_install. Isso ocorre porque acabou instalando-o para a versão errada do Python.
Nagev 18/09/17
28

Existem várias fontes na rede sugerindo um hack, reinstalando o pacote com a opção -m e removendo o arquivo .egg na lib / e os binários no bin /. Além disso, a discussão sobre esse problema do setuptools pode ser encontrada no rastreador de erros do python, como o problema 21 do setuptools .

Edit: Adicionado o link para o bugtracker python.

c089
fonte
2
Obrigado por esta informação. Para referência de outros, aqui está o link para o problema que você mencionou: bugs.python.org/setuptools/issue21
ire_and_curses
25

Se o problema for bastante chato para você, considere o virtualenv . Permite criar um ambiente que encapsula bibliotecas python. Você instala pacotes lá em vez de no diretório global de pacotes de sites. Todos os scripts que você executa nesse ambiente têm acesso a esses pacotes (e, opcionalmente, também aos globais). Eu uso muito isso ao avaliar pacotes que não tenho certeza de que quero / preciso instalar globalmente. Se você decidir que não precisa do pacote, será fácil remover esse ambiente virtual. É bem fácil de usar. Crie um novo ambiente:

$>virtualenv /path/to/your/new/ENV

O virtual_envt instala ferramentas de configuração para você no novo ambiente, para que você possa:

$>ENV/bin/easy_install

Você pode até criar seus próprios scripts boostrap que configuram seu novo ambiente. Portanto, com um comando, você pode criar um novo ambiente virtual virtual com, digamos, python 2.6, psycopg2 e django instalado por padrão (você pode instalar uma versão específica do ambiente, se desejar).

mazelife
fonte
O que é $>? Isso é um prompt? Talvez corrigir para $ seria mais útil? Obrigado
Gray
19

Instruções oficiais (?): Http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Se você substituiu um pacote por outra versão, é possível excluir os pacotes desnecessários excluindo o arquivo ou diretório PackageName-versioninfo.egg (encontrado no diretório de instalação).

Se você deseja excluir a versão atualmente instalada de um pacote (ou todas as versões de um pacote), execute primeiro:

easy_install -mxN PackageName

Isso garantirá que o Python não continue procurando um pacote que você planeja remover. Depois de fazer isso, você pode excluir com segurança os arquivos ou diretórios .egg, juntamente com os scripts que deseja remover.

Mark Rajcok
fonte
Parece que algumas coisas nunca mudam! O PIP se recusou a instalar um plugin de corte do TRAC (trac admin), apenas o easy_install funciona. Mas eu instalei acidentalmente uma versão antiga. E o easy_install não foi capaz de corrigir isso a partir do URL https do projeto. Então, usei o PIP para removê-lo, mas após a reinstalação do TRAC, o plug-in não é exibido. Então, eu uso as informações aqui para isolar o pkg, excluí-lo manualmente e reinstalar. ufa. (python 2.7)
Richard Cooke
15

tentar

$ easy_install -m [PACKAGE]

então

$ rm -rf .../python2.X/site-packages/[PACKAGE].egg
Jim Geovedi
fonte
1
Para remover um pacote: $ easy_install -mxN PACKAGE then $ rm -rf .../lib/python2.X/site-packages/PACKAGE.egg (See peak.telecommunity.com/DevCenter/… )
Vinicius José Latorre
7

Para listar pacotes Python instalados, você pode usar yolk -l. Você precisará usar easy_install yolkprimeiro.

Enis Afgan
fonte
6

Me deparei com essa questão, ao tentar desinstalar os muitos pacotes Python aleatórios instalados ao longo do tempo.

Usando informações deste segmento, é isso que eu vim com:

cat package_list | xargs -n1 sudo pip uninstall -y

O package_listé limpo (awk) de um pip freezeem um virtualenv.

Para remover quase todos os pacotes Python:

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y
m0hit
fonte
<package_list xargs -n1 sudo pip uninstall -yevita um UUOC!
Heini Høgnason
3

Encontrei o mesmo problema no meu MacOS X Leopard 10.6.blah.

A solução é garantir que você esteja chamando o MacPorts Python:

sudo port install python26
sudo port install python_select
sudo python_select python26
sudo port install py26-mysql

Espero que isto ajude.

Cmag
fonte
1
No entanto, mudei completamente do MacPorts para o Brew, python nativo 2.7 do mac. MySQLdb instalado via setup_tools
Cmag
3

Para mim, apenas para excluir este arquivo: easy-install.pth funcionou, resto pip install django == 1.3.7

Snehal Parmar
fonte
1

Isso funcionou para mim. É semelhante às respostas anteriores, mas o caminho para os pacotes é diferente.

  1. sudo easy_install -m
  2. sudo rm -rf /Library/Python/2.7/site-packages/.egg

Plataforma: MacOS High Sierra versão 10.13.3

Galo Vermelho
fonte
1
primeiro comando produz este erro para mim:error: No urls, filenames, or requirements specified (see --help)
Michael