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.