2008-12-31 15 views

Respuesta

35

Varía según las opciones que pase a install y el contenido de distutils configuration files en el sistema/en el paquete. No creo que los archivos se modifiquen fuera de los directorios especificados de esta manera.

Notablemente, distutils does not have an uninstall command en este momento.

También es de destacar que la eliminación de un paquete/huevo puede causar problemas de dependencia: utilidades como easy_install intentan aliviar esos problemas.

+3

¿Puede usted por favor actualizar esta para abordar directamente los archivos parte persistente de la pregunta? –

+0

Creo que sí, no se crean archivos fuera de los directorios especificados por la configuración de distutils y los indicadores de instalación, por lo que cualquier archivo "persistente" existirá en estos directorios. Varía de un paquete a otro. – cdleary

+1

@cdleary: gracias, pero esperaba que simplemente aclararas y fortalecieras tu respuesta, sin agregar un largo hilo de comentarios. –

4

Si esto es para fines de prueba o desarrollo, setuptools tiene un comando develop que se actualiza cada vez que realiza un cambio (para que no tenga que desinstalar y volver a instalar cada vez que realiza un cambio). Y también puedes desinstalar el paquete usando este comando.

Si utiliza esto, todo lo que declare como una secuencia de comandos quedará como un archivo persistente.

15

Las tres cosas que se instalan que tendrá que eliminar son:

  1. paquetes/módulos
  2. Scripts archivos
  3. datos

Ahora en mi sistema Linux éstos viven en :

  1. /usr/lib/python2.5/site-
  2. paquetes
  3. /usr/bin
  4. /usr/share

Pero en un sistema de ventanas que son más propensos a ser enteramente dentro del directorio de distribución de Python. No tengo idea acerca de OSX, excepto que es más fácil seguir el patrón de Linux.

7

Sí, es seguro simplemente eliminar todo lo que distutils instaló. Eso vale para las carpetas instaladas o los archivos .egg. Naturalmente, cualquier cosa que dependa de ese código ya no funcionará.

Si desea que vuelva a funcionar, simplemente vuelva a instalar.

Por cierto, si está utilizando distutils, también considere usar la función de varias versiones. Le permite tener múltiples versiones de cualquier paquete individual instalado. Eso significa que no necesita eliminar una versión anterior de un paquete si simplemente desea instalar una versión más nueva.

2

Acabo de desinstalar un paquete de Python, y aunque no soy cierto lo hice perfectamente, estoy razonablemente seguro.

empecé obteniendo una lista de todos los archivos relacionados con Python, por fecha, en el supuesto de que todos los archivos en mi paquete tendrá más o menos la misma marca de tiempo, y no hay otros archivos se.

Afortunadamente, tengo Python instalado bajo /opt/Python-2.6.1; si hubiera estado utilizando el Python que viene con mi distribución de Linux, habría tenido que recorrer todo el /usr, lo que habría llevado mucho tiempo.

Luego examiné esa lista y noté con alivio que todas las cosas que deseaba nukear consistían en un directorio, /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/, y un archivo, /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info.

Así que acabo de eliminar esos.

Así es como llegué la lista de fechas-ordenada de archivos:

find "[email protected]" -printf '%[email protected] ' -ls | sort -n | cut -d\ -f 2-

(creo que tiene que haber GNU "encontrar", por cierto, el sabor se obtiene en OS X doesn' t saber acerca de "-printf '% T @'")

Yo uso ese todos el tiempo.

2

Para Windows 7,

Panel de control -> Programas -> Desinstalar

, entonces

elegir el paquete python eliminar.

+7

Esta sugerencia fue útil para mí Gracias. – Mauricio

+0

@Mauricio No veo versiones antiguas en la lista, pero puedo ver los archivos egg en los paquetes de sitio. ¿Es esto un problema? – Olexandr

12

Otro truco basado sello de tiempo:

  1. Crear un ancla: touch /tmp/ts
  2. Vuelva a instalar el paquete que quiere eliminar: python setup.py install --prefix=<PREFIX>
  3. eliminar archivos lo que son más reciente que el archivo de anclaje: find <PREFIX> -cnewer /tmp/ts | xargs rm -r
4

En ubuntu 12.04, he encontrado que el único lugar donde debe buscar por defecto es en

/usr/local/lib/python2.7/ 

¡Y simplemente elimine la carpeta y el archivo asociados, si hay alguno!

1

install --record + xargs rm

sudo python setup.py install --record files.txt 
xargs sudo rm -rf < files.txt 

elimina todos los archivos y directorios vacíos, pero deja detrás.

Eso no es ideal, debería ser suficiente para evitar conflictos de paquetes.

Y luego puede terminar el trabajo manualmente si lo desea, leyendo files.txt, o sea más valiente y automatice la eliminación de directorio vacío también.

Un ayudante segura sería:

python-setup-uninstall() (
    sudo rm -f files.txt 
    sudo python setup.py install --record files.txt && \ 
    xargs rm -rf < files.txt 
    sudo rm -f files.txt 
) 

Probado en Python 2.7.6, Ubuntu 14.04.

1

para Python en Windows:

python -m pip uninstall "package_keyword" 
uninstall **** (y/n)? 
+0

Gracias a Ciro por dar la imagen de cómo instalarlo. – user8074545

+0

significa también desinstalar imagen. – user8074545

Cuestiones relacionadas