la desinstalación de pip ya no es una respuesta válida. Aquí está la prueba. [sri @ localhost python] $ pip desinstalar foo DEPRECACIÓN: La desinstalación de un proyecto instalado distutils (foo) ha quedado en desuso y se eliminará en una versión futura. Esto se debe al hecho de que desinstalar un proyecto distutils solo lo desinstalará parcialmente.
musaraña
@shrewmouse que ya no se muestra.
JC Rocamonde
@JCRocamonde Con un paquete que he creado, se muestra la última versión de pip, It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.por lo que esto sigue siendo un problema.
Josh
@ Josh en la parte superior de su archivo setup.py haga "desde setuptools import setup" en lugar de "from distutils.core import setup".
Luego elimine también el directorio que lo contiene, por ejemplo, /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/en macOS. No tiene archivos, pero Python seguirá importando un módulo vacío:
>>>import my_module>>> my_module.__file__None
Una vez eliminado, Python muestra:
>>>import my_moduleTraceback(most recent call last):File"<stdin>", line 1,in<module>ModuleNotFoundError:No module named 'my_module'
¿Cómo puedo volver a instalar el paquete del que tengo el código fuente de setup.py?
ア レ ッ ク ス
55
Esto también deja directorios vacíos en su lugar.
Dilawar
3
Hola, probé tu sugerencia para algunos de los archivos cuando intento cat files.txt | xargs rm -rf dice permiso denegado, incluso en modo sudo, por ejemplo, para / usr / local / bin / pydoc o / usr / local / bin / idle ¿Alguna idea de por qué?
212
Para mí, lo siguiente funciona principalmente:
tener pip instalado, por ejemplo:
$ easy_install pip
Comprueba cómo se nombra tu paquete instalado desde el punto de vista de pip:
$ pip freeze
Esto enumerará los nombres de todos los paquetes que haya instalado (y que fueron detectados por pip) El nombre puede ser largo, luego use solo el nombre del paquete que se muestra en y después #egg=. En la mayoría de los casos, también puede ignorar la parte de la versión (lo que sigue ==o -).
Luego desinstale el paquete:
$ pip uninstall package.name.you.have.found
Si solicita confirmación sobre la eliminación del paquete, entonces eres un tipo con suerte y se eliminará.
pip detectará todos los paquetes que fueron instalados por pip. También detectará la mayoría de los paquetes instalados a través de easy_install o setup.py, pero esto puede fallar en algunos casos.
Aquí hay una muestra real de mi prueba local con el paquete nombrado ttr.rdstmcen MS Windows.
Todo lo que está escrito arriba todavía se aplica, de todos modos, hay pequeñas modificaciones disponibles ahora.
Instalar pip en python 2.7.9 y python 3.4
Las versiones recientes de Python vienen con un paquete que ensurepippermite instalar pip incluso cuando está fuera de línea:
$ python -m surepip --upgrade
En algunos sistemas (como Debian Jessie) esto no está disponible (para evitar que se rompa la instalación de Python).
Usando grepofind
Los ejemplos anteriores suponen que ha grepinstalado. Tenía (en el momento en que tenía MS Windows en mi máquina) un conjunto de utilidades de Linux instalado (incluido grep). Alternativamente, use MS Windows nativo findo simplemente ignore ese filtrado y busque el nombre en una lista un poco más larga de paquetes python detectados.
¿Qué herramienta / versión de empaque está utilizando para que esto funcione? ( distutils, distribute, Etc ...)
Ciro Santilli郝海东冠状病六四事件法轮功
1
Yo uso setuptools. Puede consultar bitbucket.org/vlcinsky/ttr.aws.utils.s3 (que no es perfecto). De todos modos, estoy bastante descontento con el uso de paquetes de espacio de nombres, a veces la importación se rompe sin razón visible. Pero es otra historia.
Jan Vlcinsky
1
corrigiéndome a mí mismo. Aunque importo setuptools, de hecho lo uso distribute. Otra lección: cuando instale mi propio paquete desde pypi y planee desarrollar otro que comparta localmente el mismo espacio de nombres, no use$ pip install <the package> , use $ easy_install <the package>, de lo contrario, se encontrará con conflictos al importar su paquete de desarrollo.
Jan Vlcinsky
1
Para ayudar a otros: como no soy root, instalo todo en mi casa. Aquí está lo que hice easy_install --user --prefix=$HOME pip. Luego añade lo siguiente en mi camino: ln -s /home/tflutre/.local/bin/pip ~/bin, ln -s /home/tflutre/.local/bin/pip2.7 ~/biny ln -s /home/tflutre/.local/bin/pip2 ~/bin.
tflutre
3
Esta debería ser una respuesta aceptada, ya que es mucho más fácil y pip generalmente viene con Python de todos modos. Es fácil de usar en el símbolo del sistema / terminal, pip uninstall moduleo python -m pip uninstall moduledebería funcionar. También debe ser multiplataforma, como es parte de Python.
Edward
81
La respuesta n. ° 1 tiene problemas:
No funcionará en mac.
Si se instala un archivo que incluye espacios u otros caracteres especiales, el xargscomando fallará y eliminará cualquier archivo / directorio que coincida con las palabras individuales.
el -ren rm -rfes innecesario y en el peor, podría eliminar cosas que no desea.
En cambio, para unix-like:
sudo python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr '\n''\0'< files.txt | xargs -0 sudo rm -f --
También hay problemas irresolubles con la desinstalación de la setup.pyinstalación que no te molestarán en un caso típico. Para una respuesta más completa, vea esta página wiki:
¿Por qué simplemente no dejas una sugerencia debajo de la votada? Tenga en cuenta que estos "problemas graves" se refieren a casos de esquina.
lpapp
17
Dejé un comentario debajo del votado. Mi comentario está enterrado bajo el enlace "cargar más comentarios" en el que muy pocas personas hacen clic. También hice mi propia respuesta porque tenía mucho más que decir, es decir. El enlace en mi respuesta. Además, el caso de la esquina no sería el primer término que me viene a la mente cuando un archivo tiene un espacio en él.
Ian Kelling
Por lo que vale, creo que esto fallará en los nombres de archivo que contengan nuevas líneas :) Ya sea que los mantenedores de paquetes sean tan malvados, espero nunca saberlo.
Jack O'Connor
2
En OS X Mavericks, al menos, xargs no tiene la opción -d. ¿Por qué? Porque Apple te ama. De todos modos, esto tiene los mismos efectos que el anterior, y es seguro con espacios y demás. Sin embargo, es específico de Bash. Después de ejecutar la instalación con --record to files.txt:OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
Joseph Sikorski el
2
@IanKelling Las variables de incrustación dentro printfde la cadena de formato fallarán si la cadena contiene, por ejemplo, %o \caracteres. Siempre proporcione una cadena de formato: printf '%s\0' "$line"(también evita el eco). Aunque puede evitar aún más el bucle simplemente usandotr '\n' '\0' < files.txt | xargs -0 rm -f
geirha
39
Primero grabe los archivos que ha instalado. Puede repetir este comando, incluso si ya ha ejecutado setup.py install:
python setup.py install --record files.txt
Cuando desee desinstalar puede simplemente:
sudo rm $(cat files.txt)
Esto funciona porque el comando rm toma una lista de archivos separados por espacios en blanco para eliminar y su registro de instalación es solo una lista.
¿Hay alguna manera de verificar no solo si fue mi programa el que lo instaló sino también si desde entonces, ninguna otra aplicación utilizó este recurso? Por ejemplo, instalé una herramienta, para hacerlo, tuve que instalar varias bibliotecas, tal vez algunas de ellas ya estaban instaladas (lo que significa que no puedo eliminar en el proceso de desinstalación) pero tampoco puedo eliminar nada que otras aplicaciones no se instaló porque mi biblioteca se había instalado primero ..
Gabrielle
19
Ahora python le da la opción de instalar pipdurante la instalación (estoy en Windows, ¡y al menos python lo hace para Windows!). Teniendo en cuenta que había elegido instalar pipdurante la instalación de python (en realidad no tiene que elegir porque es el predeterminado), pipya está instalado para usted. Luego, escriba en el pipsímbolo del sistema, debería ver una ayuda. Puede encontrar las instrucciones de uso necesarias allí. Por ejemplo, le pip listmuestra la lista de paquetes instalados. Puedes usar
La manera perezosa: simplemente desinstale desde el menú de instalación de Windows (si está utilizando Windows), o desde el comando rpm, siempre que primero lo reinstale después de crear un paquete de distribución.
No sé si me gusta, pero obtienes un punto para el pensamiento ortogal. :)
Lennart Regebro
Para ser honesto, tampoco estoy seguro, por lo tanto, "la manera perezosa" ;-) Pero pensé en mencionar que era posible crear más instaladores "estándar". Sin embargo, es extraño que setup.py no proporcione una forma limpia de eliminar paquetes.
RedGlyph
1
Las desinstalaciones requieren registros centralizados de paquetes instalados y sus archivos, y no hay ninguno. Hay discusiones en curso sobre cómo mejorar esta historia y podría resolverse en Python 2.7 / 3.2 o 2.8 / 3.3 más o menos.
Lennart Regebro
1
@Lennart: no habrá Python 2.8, al menos esa es la declaración oficial actual
Piotr Owsiak
2
@PiotrOwsiak: Sí, pero esa no era la declaración entonces. 2.8 todavía era una posibilidad en ese momento y se mantuvo así hasta que se aprobó PEP 404, a fines del año pasado, creo.
Lennart Regebro
6
Vaya a su directorio de paquetes de python y elimine su archivo .egg, por ejemplo: En python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/
En python 2.6 (ubuntu): /usr/local/lib/python2.6/dist-packages/
Funciona, a menos que la instalación instale archivos fuera del paquete, lo que algunos hacen, como setuptools que instala y el comando easy_install.
Lennart Regebro
3
Normalmente, si un paquete se instaló usando python setup.py como lo especifica el OP, no habría un huevo. OTOH, si hay uno porque se usó easy_install, la forma documentada de desinstalar paquetes es usar easy_install -m antes de eliminar el archivo egg; de lo contrario, las cáscaras de huevo pueden quedar atrás en el archivo easy-install.pth.
Ned Deily
5
No responde exactamente la pregunta, pero es algo que me ayuda todos los días:
Instala tus paquetes con
pip install .
Esto pone el paquete en $HOME/.local. Desinstalar con
Mucho más fácil escribir esto como sudo xargs rm -v < install.record.
Poolie
1
Si todavía tiene archivos que se supone que deben eliminarse después de volver a instalar un paquete, asegúrese de que la carpeta buildtambién esté eliminada. Por lo tanto, suponiendo que ese pkges el paquete que desea eliminar:
Había ejecutado "python setup.py install" en algún momento del pasado accidentalmente en mi entorno global, y tuve muchas dificultades para desinstalarlo. Estas soluciones no ayudaron. La "desinstalación de pip" no funcionó con "No se puede desinstalar 'splunk-appinspect'. No se encontraron archivos para desinstalar". "la desinstalación de sudo pip" no funcionó "No se puede desinstalar el requisito splunk-appinspect, no instalado". Intenté desinstalar pip, eliminar el caché de pip, buscar el paquete en mi disco duro, etc.
"pip show" eventualmente me llevó a la solución, la "Ubicación:" apuntaba a un directorio, y al cambiar el nombre de ese directorio se eliminó el paquete de la lista de pip. Cambié el nombre del directorio, y no volvió a aparecer en la lista de pip, y ahora puedo reinstalar mi paquete en un virtualenv.
Había corrido python setup.py installuna vez en mi PyCharm, instala todos los paquetes en mi entorno base conda. Más tarde, cuando quiero eliminar todos estos paquetes, pip uninstallno funciona. Tuve que eliminarlos de /anaconda3/lib/python3.7/site-packages manualmente :(
Así que no veo la razón por la que usan setup.py en lugar de escribir el archivo require.txt. El archivo de requisitos se puede usar para instalar paquetes en un entorno virtual y no interferirá con los paquetes de Python del sistema.
pip uninstall <your_package>
. Ver stackoverflow.com/questions/1231688/… .It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
por lo que esto sigue siendo un problema.Respuestas:
Nota: Evite
python setup.py install
usarpip install .
Debe eliminar todos los archivos manualmente y también deshacer cualquier otra cosa que la instalación haya hecho manualmente.
Si no conoce la lista de todos los archivos, puede reinstalarla con la
--record
opción, y eche un vistazo a la lista que esto produce.Para grabar una lista de archivos instalados, puede usar:
Una vez que desee desinstalar, puede usar xargs para hacer la eliminación:
O si está ejecutando Windows, use Powershell:
Luego elimine también el directorio que lo contiene, por ejemplo,
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/
enmacOS
. No tiene archivos, pero Python seguirá importando un módulo vacío:Una vez eliminado, Python muestra:
fuente
cat files.txt | xargs sudo rm -rf
Para mí, lo siguiente funciona principalmente:
tener pip instalado, por ejemplo:
Comprueba cómo se nombra tu paquete instalado desde el punto de vista de pip:
Esto enumerará los nombres de todos los paquetes que haya instalado (y que fueron detectados por pip) El nombre puede ser largo, luego use solo el nombre del paquete que se muestra en y después
#egg=
. En la mayoría de los casos, también puede ignorar la parte de la versión (lo que sigue==
o-
).Luego desinstale el paquete:
Si solicita confirmación sobre la eliminación del paquete, entonces eres un tipo con suerte y se eliminará.
pip detectará todos los paquetes que fueron instalados por pip. También detectará la mayoría de los paquetes instalados a través de easy_install o setup.py, pero esto puede fallar en algunos casos.
Aquí hay una muestra real de mi prueba local con el paquete nombrado
ttr.rdstmc
en MS Windows.Editar 2015-05-20
Todo lo que está escrito arriba todavía se aplica, de todos modos, hay pequeñas modificaciones disponibles ahora.
Instalar pip en python 2.7.9 y python 3.4
Las versiones recientes de Python vienen con un paquete que
ensurepip
permite instalar pip incluso cuando está fuera de línea:$ python -m surepip --upgrade
En algunos sistemas (como Debian Jessie) esto no está disponible (para evitar que se rompa la instalación de Python).
Usando
grep
ofind
Los ejemplos anteriores suponen que ha
grep
instalado. Tenía (en el momento en que tenía MS Windows en mi máquina) un conjunto de utilidades de Linux instalado (incluido grep). Alternativamente, use MS Windows nativofind
o simplemente ignore ese filtrado y busque el nombre en una lista un poco más larga de paquetes python detectados.fuente
distutils
,distribute
, Etc ...)setuptools
. Puede consultar bitbucket.org/vlcinsky/ttr.aws.utils.s3 (que no es perfecto). De todos modos, estoy bastante descontento con el uso de paquetes de espacio de nombres, a veces la importación se rompe sin razón visible. Pero es otra historia.setuptools
, de hecho lo usodistribute
. Otra lección: cuando instale mi propio paquete desde pypi y planee desarrollar otro que comparta localmente el mismo espacio de nombres, no use$ pip install <the package>
, use$ easy_install <the package>
, de lo contrario, se encontrará con conflictos al importar su paquete de desarrollo.easy_install --user --prefix=$HOME pip
. Luego añade lo siguiente en mi camino:ln -s /home/tflutre/.local/bin/pip ~/bin
,ln -s /home/tflutre/.local/bin/pip2.7 ~/bin
yln -s /home/tflutre/.local/bin/pip2 ~/bin
.pip uninstall module
opython -m pip uninstall module
debería funcionar. También debe ser multiplataforma, como es parte de Python.La respuesta n. ° 1 tiene problemas:
xargs
comando fallará y eliminará cualquier archivo / directorio que coincida con las palabras individuales.-r
enrm -rf
es innecesario y en el peor, podría eliminar cosas que no desea.En cambio, para unix-like:
Y para ventanas:
También hay problemas irresolubles con la desinstalación de la
setup.py
instalación que no te molestarán en un caso típico. Para una respuesta más completa, vea esta página wiki:https://ofswiki.org/wiki/Uninstalling_setup.py_install
fuente
OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
printf
de la cadena de formato fallarán si la cadena contiene, por ejemplo,%
o\
caracteres. Siempre proporcione una cadena de formato:printf '%s\0' "$line"
(también evita el eco). Aunque puede evitar aún más el bucle simplemente usandotr '\n' '\0' < files.txt | xargs -0 rm -f
Primero grabe los archivos que ha instalado. Puede repetir este comando, incluso si ya ha ejecutado
setup.py install
:Cuando desee desinstalar puede simplemente:
Esto funciona porque el comando rm toma una lista de archivos separados por espacios en blanco para eliminar y su registro de instalación es solo una lista.
fuente
Ahora python le da la opción de instalar
pip
durante la instalación (estoy en Windows, ¡y al menos python lo hace para Windows!). Teniendo en cuenta que había elegido instalarpip
durante la instalación de python (en realidad no tiene que elegir porque es el predeterminado),pip
ya está instalado para usted. Luego, escriba en elpip
símbolo del sistema, debería ver una ayuda. Puede encontrar las instrucciones de uso necesarias allí. Por ejemplo, lepip list
muestra la lista de paquetes instalados. Puedes usarpara desinstalar cualquier paquete que ya no quieras. Lea más aquí (documentación de pip) .
fuente
La manera perezosa: simplemente desinstale desde el menú de instalación de Windows (si está utilizando Windows), o desde el comando rpm, siempre que primero lo reinstale después de crear un paquete de distribución.
Por ejemplo,
("foo" es un ejemplo, por supuesto).
fuente
Vaya a su directorio de paquetes de python y elimine su archivo .egg, por ejemplo: En python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/
En python 2.6 (ubuntu): /usr/local/lib/python2.6/dist-packages/
fuente
No responde exactamente la pregunta, pero es algo que me ayuda todos los días:
Instala tus paquetes con
Esto pone el paquete en
$HOME/.local
. Desinstalar confuente
pip unistall .
no funcionó para mí, pero lopip uninstall <package_name>
hizo, ¡gracias!Probablemente pueda hacer esto como alternativa: -
1) Obtenga la versión de Python -
-> El comando anterior te da la versión actual de Python que es 2.4.3
2) Obtenga el directorio de instalación de python -
-> Desde el comando anterior puede obtener el directorio de instalación que es - /usr/lib/python2.4/site-packages
3) Desde aquí puede eliminar los paquetes y los archivos de huevo de Python
Esto funcionó para mí ... Y pude desinstalar el paquete que me estaba molestando :)
fuente
Creo que puede abrir el archivo setup.py, ubicar el nombre del paquete y luego pedirle a pip que lo desinstale.
Suponiendo que el nombre esté disponible en una variable 'METADATA':
fuente
Extender lo que dijo Martin, grabar el resultado de la instalación y un pequeño script de bash hace el truco bastante bien. Esto es lo que hago ...
Y listo. Desinstalado
fuente
sudo xargs rm -v < install.record
.Si todavía tiene archivos que se supone que deben eliminarse después de volver a instalar un paquete, asegúrese de que la carpeta
build
también esté eliminada. Por lo tanto, suponiendo que esepkg
es el paquete que desea eliminar:Obove trabaja para python3 y elimina el paquete y su archivo * .egg-info
fuente
En
{virtualenv}/lib/python2.7/site-packages/
(si no usa virtualenv entonces{system_dir}/lib/python2.7/dist-packages/
)distribute-0.6.34-py2.7.egg
)easy-install.pth
, elimine la línea correspondiente (debe ser una ruta al directorio de origen o de un archivo de huevo).fuente
Había ejecutado "python setup.py install" en algún momento del pasado accidentalmente en mi entorno global, y tuve muchas dificultades para desinstalarlo. Estas soluciones no ayudaron. La "desinstalación de pip" no funcionó con "No se puede desinstalar 'splunk-appinspect'. No se encontraron archivos para desinstalar". "la desinstalación de sudo pip" no funcionó "No se puede desinstalar el requisito splunk-appinspect, no instalado". Intenté desinstalar pip, eliminar el caché de pip, buscar el paquete en mi disco duro, etc.
"pip show" eventualmente me llevó a la solución, la "Ubicación:" apuntaba a un directorio, y al cambiar el nombre de ese directorio se eliminó el paquete de la lista de pip. Cambié el nombre del directorio, y no volvió a aparecer en la lista de pip, y ahora puedo reinstalar mi paquete en un virtualenv.
fuente
Había corrido
python setup.py install
una vez en mi PyCharm, instala todos los paquetes en mi entorno base conda. Más tarde, cuando quiero eliminar todos estos paquetes,pip uninstall
no funciona. Tuve que eliminarlos de /anaconda3/lib/python3.7/site-packages manualmente :(Así que no veo la razón por la que usan setup.py en lugar de escribir el archivo require.txt. El archivo de requisitos se puede usar para instalar paquetes en un entorno virtual y no interferirá con los paquetes de Python del sistema.
fuente
Puede ser mejor eliminar archivos relacionados utilizando bash para leer comandos, como los siguientes:
fuente