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?

Michael_Scharf
fonte
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).
brilho
fonte
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.

Ahmed Shariff
fonte
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

Legolas Bloom
fonte
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

Matt Wilkie
fonte
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
...
Michael_Scharf
fonte
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
Apteryx
fonte
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