¿Cómo elimino los paquetes instalados con la instalación fácil de Python?

704

Python easy_installhace que la instalación de nuevos paquetes sea extremadamente conveniente. Sin embargo, por lo que puedo decir, no implementa las otras características comunes de un administrador de dependencias: enumerar y eliminar paquetes instalados.

¿Cuál es la mejor manera de averiguar qué está instalado y cuál es la forma preferida de eliminar los paquetes instalados? ¿Hay algún archivo que deba actualizarse si elimino los paquetes manualmente (por ejemplo, por rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.eggo similar)?

ire_and_curses
fuente
67
esta publicación tiene casi 2 años cuando escribo este comentario. pip ahora es efectivamente un reemplazo para easy_install y puede eliminar de manera adecuada y limpia los paquetes (huevos incluidos) instalados por este último. Asegúrate de votar la respuesta sugiriéndola más abajo en el hilo.
Michael Ekoka
53
El oxímoron de que algo llamado "instalación fácil" - no a: tiene una contraparte easy_uninstall, ni b: se molesta en mencionar cómo uno puede hacerlo en el --help- aturde mi mente / _furia mi alma / entristece mi corazón .
Alex Gray
13
@mike ¿y si estoy tratando de desinstalar pip? (:
mccc

Respuestas:

621

pip , una alternativa a setuptools / easy_install, proporciona un comando de "desinstalación".

Instale pip de acuerdo con las instrucciones de instalación :

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

Luego puede usar pip uninstallpara eliminar paquetes instalados coneasy_install

Lunaryorn
fuente
25
si tiene problemas para desinstalar módulos con pip, asegúrese de que la instalación de su pip esté actualizada: pip install -U pip # que es una U mayúscula
Michael Ekoka
44
pip me funcionó para desinstalar un paquete instalado easy_install. Sin embargo, tuve que ejecutar 'pip uninstall <package>' varias veces para eliminar todas las versiones del paquete. Así que tenlo en mente. Incluso eliminó un paquete instalado de 'desarrollo', que como resultado fue un desastre.
DragonFax
2
Pero, ¿cómo eliminaría el paquete no activo?
CrazyGeek
77
Utilicé easy_install para instalar pip para desinstalar las instalaciones de easy_install.
2
La respuesta dice "instalar pip", pero en realidad pip parece venir integrado con Python moderno .
Edward
188

Para desinstalar un .eggnecesita rm -rfel huevo (podría ser un directorio) y eliminar la línea correspondiente desite-packages/easy-install.pth

joeforker
fuente
18
El nuevo pipadministrador de paquetes incluye una función de desinstalación.
joeforker
Encuentro pip mejor que desinstalar, porque pip se instala desde las fuentes. Si tienes como yo una nueva marca de 64 bits Win7, se guardará sus días :)
daitangio
66
Algunos de los usos están atascados con una versión antigua de pip que no tiene la opción de desinstalación, por lo que esta respuesta aún vale.
Mark Pitchless
55
Probablemente valga la pena mencionar que este método puede dejar extraviados data_filesy scripts(y posiblemente otras categorías de archivos) en el sistema. El huevo EGG-INFO/SOURCES.txtcontiene una lista de todos los packagearchivos y sources, pero no data_files, que se puede instalar en cualquier directorio arbitrario en su sistema ...
Alex Leach
pip no siempre elimina todo lo que instala easy_install. Aquí hay una pequeña experiencia que me sucedió donde pip no pudo desinstalar uno de mis módulos. Tuve que eliminar la línea correspondiente de site-packages / easy-install.pth para desinstalarlo por completo.
ychaouche
158

Primero debes ejecutar este comando:

$ easy_install -m [PACKAGE]

Elimina todas las dependencias del paquete.

Luego elimine el archivo de huevo de ese paquete:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg
PythonDev
fuente
1
más documentos aquí: peak.telecommunity.com/DevCenter/…
GiDo
-mno es el comando apropiado de easy_install para eliminar cualquier cosa, por lo que puedo decir, pero esta respuesta proporciona la ubicación crucial de los paquetes de easy_install que otras respuestas no. una rm -rf /usr/local/lib/python*antes de instalar pip es el camino a seguir Me parece
fuzzyTew
55

Toda la información está en las otras respuestas, pero ninguna resume tanto sus solicitudes o parece hacer las cosas innecesariamente compleja:

  • Para su eliminación necesita usar:

    pip uninstall <package>

    (instalar usando easy_install pip)

  • Para su 'lista de paquetes instalados' necesita usar:

    pip freeze

    O:

    yolk -l

    que puede generar más detalles del paquete.

    (Instalar a través de easy_install yolko pip install yolk)

Rabarberski
fuente
Después de ejecutar yolk -l, veo que tengo paquetes duplicados como "scipy -0.11.0 -non-active development" y "scipy -0.14.0 ... -active development". ¿Cómo puedo desinstalar estos paquetes de desarrollo no activos?
bobbyjoe93
2
Esto es bueno, excepto que quiero desinstalar pip que fue instalado por easy_install. Esto se debe a que terminó instalándolo para la versión incorrecta de Python.
Nagev
28

Hay varias fuentes en la red que sugieren un truco al reinstalar el paquete con la opción -m y luego simplemente eliminar el archivo .egg en lib / y los binarios en bin /. Además, la discusión sobre este problema de setuptools se puede encontrar en el rastreador de errores de python como el problema 21 de setuptools .

Editar: se agregó el enlace al rastreador de errores de Python.

c089
fuente
2
Gracias por esta información Para referencia de otros, aquí está el enlace al problema que mencionó: bugs.python.org/setuptools/issue21
ire_and_curses
25

Si el problema es una molestia lo suficientemente grave para usted, puede considerar virtualenv . Le permite crear un entorno que encapsula las bibliotecas de Python. Instala paquetes allí en lugar de hacerlo en el directorio global de paquetes de sitio. Todos los scripts que ejecute en ese entorno tienen acceso a esos paquetes (y opcionalmente, también a los globales). Lo uso mucho al evaluar paquetes que no estoy seguro de querer / necesito instalar globalmente. Si decide que no necesita el paquete, es bastante fácil eliminar ese entorno virtual. Es bastante fácil de usar. Crea un nuevo entorno:

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

virtual_envt instala setuptools en el nuevo entorno, para que pueda hacer:

$>ENV/bin/easy_install

Incluso puede crear sus propios scripts boostrap que configuran su nuevo entorno. Entonces, con un comando, puede crear un nuevo entorno virtual con, por ejemplo, python 2.6, psycopg2 y django instalados de forma predeterminada (puede instalar una versión específica de env de python si lo desea).

mazelife
fuente
¿Qué es $>? ¿Es eso un aviso? Tal vez corregir a $ sería más útil? Gracias
Gray
19

Instrucciones oficiales (?): Http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Si ha reemplazado un paquete con otra versión, puede eliminar los paquetes que no necesita eliminando el archivo o directorio PackageName-versioninfo.egg (que se encuentra en el directorio de instalación).

Si desea eliminar la versión actualmente instalada de un paquete (o todas las versiones de un paquete), primero debe ejecutar:

easy_install -mxN PackageName

Esto asegurará que Python no continúe buscando un paquete que planea eliminar. Una vez que haya hecho esto, puede eliminar de forma segura los archivos o directorios .egg, junto con cualquier script que desee eliminar.

Mark Rajcok
fuente
¡Algunas cosas nunca cambian parece! PIP se negó a instalar un complemento de pirateo TRAC (trac admin), solo funciona easy_install. Pero accidentalmente instalé una versión anterior. Y easy_install no pudo arreglar eso desde la URL https para el proyecto. Así que usé PIP para eliminarlo, pero después de volver a instalar TRAC no veo el complemento. Así que uso la información aquí para aislar el paquete y eliminarlo manualmente, luego volver a instalarlo. Uf. (python 2.7)
Richard Cooke
15

tratar

$ easy_install -m [PACKAGE]

entonces

$ rm -rf .../python2.X/site-packages/[PACKAGE].egg
Jim Geovedi
fuente
1
Para eliminar un paquete: $ easy_install -mxN PACKAGE luego $ rm -rf .../lib/python2.X/site-packages/PACKAGE.egg (Ver peak.telecommunity.com/DevCenter/… )
Vinicius José Latorre
7

Para enumerar los paquetes de Python instalados, puede usar yolk -l. Sin easy_install yolkembargo, primero deberá usarlo .

Enis Afgan
fuente
6

Encontré esta pregunta, al intentar desinstalar los muchos paquetes aleatorios de Python instalados con el tiempo.

Usando la información de este hilo, esto es lo que se me ocurrió:

cat package_list | xargs -n1 sudo pip uninstall -y

El package_listse limpia (awk) de unpip freeze en un virtualenv.

Para eliminar casi todos los paquetes de Python:

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

Me encontré con el mismo problema en mi MacOS X Leopard 10.6.blah.

La solución es asegurarte de que estás llamando a MacPorts Python:

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

Espero que esto ayude.

Cmag
fuente
1
Sin embargo, he cambiado completamente de MacPorts a Brew, python 2.7 nativo de mac. MySQLdb instalado a través de setup_tools
Cmag
3

Para mí solo borrando este archivo: easy-install.pth funcionó, rest pip install django == 1.3.7

Snehal Parmar
fuente
1

Esto funcionó para mí. Es similar a las respuestas anteriores, pero la ruta a los paquetes es diferente.

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

Plataforma: MacOS High Sierra versión 10.13.3

Gallo rojo
fuente
1
primer comando produce este error para mí:error: No urls, filenames, or requirements specified (see --help)
Michael