Como desinstalar pacotes editáveis ​​com pip (instalado com -e)


107

Eu instalei alguns pacotes com -e

> pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev

Eu com pip freeze eu vejo

> pip freeze
...
-e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
...

quando tento desinstalar os pacotes, recebo erros:

> pip uninstall horus-dev
Cannot uninstall requirement horus-dev, not installed

> pip uninstall horus
Cannot uninstall requirement horus, not installed

Como faço para desinstalar esse pacote?


pip uninstall <package> desinstala pacotes instalados no modo editável nas versões recentes do pip (o meu é 19.1.1). Certifique-se de usar o nome do pacote em setup.py, não o alias que você especificou para chamar esse pacote em entry_points
— picmate 涅

para pessoas que usam conda, para desinstalar no modo dev no conda faça:conda develop -u .
— Charlie Parker

Você descobriu por pip uninstall yourpackageque não funcionou? Como o que significam seus erros? Parece uma saída estranha do comando ...
— Charlie Parker

Você tentou pip uninstall -e .ou python setup.py develop -u?
— Charlie Parker

2
Para mim pip uninstall library funcionou muito bem. Se for a resposta fornecida pelo OP parece que é algo estranho com a biblioteca dele que foi corrompida. Espero que isso economize tempo das pessoas na próxima vez que vierem aqui. Porém, existem muitas opções diferentes que podem funcionar.
— Charlie Parker

Respostas:


90

Em {virtualenv}/lib/python2.7/site-packages/(se não estiver usando o virtualenv, então {system_dir}/lib/python2.7/dist-packages/)

  • remova o arquivo de ovo (por exemplo distribute-0.6.34-py2.7.egg) se houver algum
  • De arquivo easy-install.pth , remova a linha correspondente (deve ser um caminho para o diretório de origem ou de um arquivo egg).

43
É uma espécie de surpresa que não existe uma forma de desinstalação correspondente para isso.
— Drake Guan

4
@Drake sim, muito chato na verdade
— glarrain

4
Com a versão atual do pip, a desinstalação está funcionando bem também para pacotes instalados com -eopção.
— famousgarkin de

9
para mim usando 8.1.2, pip uninstall package_namefunciona, mas pip uninstall .não funciona
— confused00

5
Há um problema aberto contra pip aqui para a capacidade de remover pacotes instalados editáveis.
— Chris Hunt

22

Uma maneira mais fácil de fazer o mesmo com a nova versão de setup_tools é executar o seguinte:

python setup.py develop -u

O que basicamente faz o mesmo que @glarrain descreve em sua resposta.


2
é suposto haver alguma saída para esse comando? Eu entendo diz, running developmas eu continuo o .egg-infoarquivo ... devo removê-lo?
— Pinóquio em

Qual é a "nova versão do setup_tools" que tem essa resposta funcionando? Você pode confirmar isso, por favor?
— Charlie Parker

A sua resposta garante que não é necessário remover os finos manualmente?
— Charlie Parker

Não produz nenhuma saída. De acordo com meu entendimento, ele deve removê-lo: "--desinstalar, -u Desimplantar o projeto atual. Você pode usar a opção --install-dir ou -d para designar a área de teste. O arquivo .egg-link criado irá ser removido, se presente e ainda estiver apontando para o diretório do projeto. " da documentação do setuptools . Depois de executar isso, ele ainda carrega o conteúdo do diretório de desenvolvimento?
— Ahmed Shariff

@CharlieParker Não tenho certeza em qual versão isso foi introduzido. Eu nunca tive que remover manualmente esses arquivos.
— Ahmed Shariff

10

Instale um pacote dev use cmd:

pip install --editable .

Desinstalar:

rm -r $(find . -name '*.egg-info')

Agora você pode usar:

pip uninstall package_name 

ou python setup.py develop --uninstalloupython setup.py develop -u


4
Você pode especificar de onde está executando o segundo comando, por favor?
— ethanabrooks

1
@ethanabrooks .é o diretório atual, você usa o caminho absoluto completo do pacote.
— Legolas Bloom

1
Incompleto. E quanto a todos os pacotes Python? ( site-packagesdir)
— Jorge Orpinel

Isso não desfaz totalmente a instalação. Ele exclui coisas da pasta de onde o pacote foi instalado, mas não exclui o link simbólico em seu dist-packagesdiretório (onde o Python procura pelo pacote instalado). Limpador para usar python setup.py develop -u.
— Mark Amery

@MarkAmery Obrigado, pip uninstall package_nametrabalhe agora.
— Legolas Bloom

6

Este é um bug no debian / ubuntu linux usando pip instalado no sistema operacional (v8.1.1 para mim), que é o que você usará sudo pipmesmo se tiver atualizado o pip (por exemplo, get-pip.py). Veja https://github.com/pypa/pip/issues/4438

Para uma discussão sobre como limpar, consulte /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip , embora as soluções lá sejam do variedade "remover tudo".

... pacotes pip [ir] /usr/local/lib/python2.7/dist-packagese pacotes apt para/usr/lib/python2.7/dist-packages

... alguns pacotes foram instalados ~/.local/libtambém.

Para o meu sistema, tudo que eu precisava remover era /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link


Para mim pip uninstall libraryfuncionou muito bem. Se for a resposta fornecida pelo OP parece que é algo estranho com a biblioteca dele que foi corrompida. Espero que isso economize tempo das pessoas na próxima vez que vierem aqui. Porém, existem muitas opções diferentes que podem funcionar
— Charlie Parker

5

Acontece que minha instalação estava de alguma forma corrompida.

Eu poderia encontrar a entrada em:

/usr/local/lib/python2.7/site-packages/easy-install.pth

Para resolver o problema, removi manualmente a linha do arquivo .pth!

import sys; sys.__plen = len(sys.path)
...
/absolute-path-to/horus  # <- I removed this line
...

1
O que significa que sua instalação foi corrompida?
— Charlie Parker

-1

Simplesmente desinstale o pacote que você instalou no modo 'editável':

pip uninstall yourpackage

9
OP tentou fazer isso e diz isso em sua pergunta. Isso não funciona necessariamente com pacotes instalados como 'editáveis'
— dusktreader

2
@dusktreader: Não tenho certeza do que está acontecendo com o pip uninstallcomando do OP (talvez uma versão desatualizada do pip?), mas verifiquei que em circunstâncias normais ele faz exatamente o que foi sugerido fazer manualmente na resposta aceita por @glarrain. Se não estiver funcionando para você, detalhe o que você está fazendo aqui para que possamos aprofundar o problema.
— Apteryx

@Apteryx, espere, você está dizendo que funciona até no modo editável?
— Charlie Parker

Essa resposta funcionou para mim. Acho que não funcionou para o OP porque se você verificar sua resposta, ele teve uma instalação corrompida estranha (ou seu computador estava em um estado estranho). pip uninstall pkgfunciona afaik.
— Charlie Parker
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.