Cómo desinstalar paquetes editables con pip (instalado con -e)

107

He instalado algunos paquetes con -e

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

Yo con pip freeze veo

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

cuando intento desinstalar los paquetes obtengo errores:

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

> pip uninstall horus
Cannot uninstall requirement horus, not installed

¿Cómo desinstalo dicho paquete?

Michael_Scharf
fuente
pip uninstall <package> desinstala los paquetes instalados en el modo editable en versiones recientes de pip (el mío es 19.1.1). Asegúrese de usar el nombre del paquete en setup.py, no el alias que especifique para llamar a ese paquete en entry_points
picmate 涅
para las personas que usan conda, para desinstalar en modo dev en conda do:conda develop -u .
Charlie Parker
¿Descubriste por qué pip uninstall yourpackageno funcionó? ¿Qué significan tus errores? Parece una salida extraña del comando ...
Charlie Parker
¿Intentaste pip uninstall -e .o python setup.py develop -u?
Charlie Parker
2
Para mí pip uninstall libraryfuncionó muy bien. Si va a la respuesta que proporcionó el OP, parece que hay algo extraño con su biblioteca que estaba dañada. Con suerte, esto les ahorrará tiempo a las personas la próxima vez que vengan aquí. Sin embargo, existen muchas opciones diferentes que podrían funcionar.
Charlie Parker

Respuestas:

90

En {virtualenv}/lib/python2.7/site-packages/(si no usa virtualenv entonces {system_dir}/lib/python2.7/dist-packages/)

  • quitar la lima de huevo (por ejemplo distribute-0.6.34-py2.7.egg) si hay alguna
  • del archivo easy-install.pth, elimine la línea correspondiente (debe ser una ruta al directorio de origen o de un archivo huevo).
glarrain
fuente
43
Es una especie de sorpresa que no haya una forma de desinstalación correspondiente para eso.
Drake Guan
4
@Drake sí, bastante molesto en realidad
glarrain
4
Con la versión actual de pip, la desinstalación funciona bien también para los paquetes instalados con la -eopción.
Famousgarkin
9
para mí usando 8.1.2, pip uninstall package_namefunciona, pero pip uninstall .no funciona
confused00
5
Hay un problema abierto contra pip aquí por la capacidad de eliminar paquetes instalados editables.
Chris Hunt
22

Una forma más sencilla de hacer lo mismo con la nueva versión de setup_tools es ejecutar lo siguiente:

python setup.py develop -u

Que básicamente hace lo mismo que lo que describe @glarrain en su respuesta.

Ahmed Shariff
fuente
2
¿Se supone que hay alguna salida para ese comando? Lo entiendo dice running developpero sigo con el .egg-infoarchivo ... ¿se supone que debo eliminarlo?
Pinocho
¿Cuál es la "nueva versión de setup_tools" que tiene esta respuesta? ¿Puedes confirmar esto por favor?
Charlie Parker
¿Su respuesta garantiza que uno no tiene que eliminar los delgados manualmente?
Charlie Parker
No produce ninguna salida. Según tengo entendido, debería eliminarlo: "--uninstall, -u Desinstalar el proyecto actual. Puede usar la opción --install-dir o -d para designar el área de ensayo. El archivo .egg-link creado ser eliminado, si está presente y sigue apuntando al directorio del proyecto ". de los documentos de setuptools . Después de ejecutar esto, ¿todavía carga el contenido del directorio de desarrollo?
Ahmed Shariff
@CharlieParker No estoy seguro de en qué versión se introdujo. Nunca he tenido que eliminar manualmente estos archivos.
Ahmed Shariff
10

Instale un paquete de desarrollo, use cmd:

pip install --editable .

Desinstalar:

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

Ahora puedes usar:

pip uninstall package_name 

o python setup.py develop --uninstallopython setup.py develop -u

Legolas Bloom
fuente
4
¿Puede especificar desde dónde está ejecutando ese segundo comando, por favor?
ethanabrooks
1
@ethanabrooks .es el directorio actual, usa la ruta absoluta completa del paquete.
Legolas Bloom
1
Incompleto. ¿Qué pasa con todos los paquetes de Python? ( site-packagesdir)
Jorge Orpinel
Esto no deshace completamente la instalación. Elimina cosas de la carpeta desde la que se instaló el paquete, pero no elimina el enlace simbólico en su dist-packagesdirectorio (donde Python busca el paquete instalado). Limpiador de usar python setup.py develop -u.
Mark Amery
@MarkAmery Gracias, pip uninstall package_nametrabaja ahora.
Legolas Bloom
6

Este es un error en debian / ubuntu linux usando pip instalado en el sistema operativo (v8.1.1 para mí), que es lo que invocará sudo pipincluso si ha actualizado pip (por ejemplo, get-pip.py). Ver https://github.com/pypa/pip/issues/4438

Para una discusión sobre cómo limpiar, consulte /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip , aunque las soluciones que existen son de variedad "eliminar todo".

... paquetes pip [ir] /usr/local/lib/python2.7/dist-packagesay paquetes apt a/usr/lib/python2.7/dist-packages

... también se instalaron algunos paquetes ~/.local/lib.

Para mi sistema, todo lo que necesitaba eliminar era /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link

Matt Wilkie
fuente
Para mí pip uninstall libraryfuncionó muy bien. Si va a la respuesta que proporcionó el OP, parece que hay algo extraño con su biblioteca que estaba dañada. Con suerte, esto les ahorrará tiempo a las personas la próxima vez que vengan aquí. Sin embargo, hay muchas opciones diferentes que podrían funcionar
Charlie Parker
5

Resulta que mi instalación estaba corrupta de alguna manera.

Podría encontrar la entrada en:

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

Para resolver el problema, eliminé la línea en el archivo .pth a mano.

import sys; sys.__plen = len(sys.path)
...
/absolute-path-to/horus  # <- I removed this line
...
Michael_Scharf
fuente
1
¿Qué significa que su instalación estaba dañada?
Charlie Parker
-1

Simplemente desinstale el paquete que instaló en modo 'editable':

pip uninstall yourpackage
Ápterix
fuente
9
OP ha intentado esto y lo dice en su pregunta. Esto no necesariamente funciona con los paquetes instalados como 'editables'
sunsettreader
2
@dusktreader: No estoy seguro de qué está pasando con el pip uninstallcomando de OP (¿tal vez una versión desactualizada de pip?), Pero he verificado que en circunstancias normales hace exactamente lo que se sugirió hacer manualmente en la respuesta aceptada por @glarrain. Si no le está funcionando, detalle lo que está haciendo aquí para que podamos investigar más el problema.
Apteryx
@Apteryx espera, ¿estás diciendo que eso funciona incluso para el modo editable?
Charlie Parker
Esta respuesta funcionó para mí. Creo que no funcionó para el OP porque si verificas su respuesta, tenía una instalación corrupta extraña (o su computadora estaba en un estado extraño). pip uninstall pkgfunciona afaik.
Charlie Parker