He instalado un paquete de Python con python setup.py install
.
¿Cómo lo desinstalo?
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:
python setup.py install --record files.txt
Una vez que desee desinstalar, puede usar xargs para hacer la eliminación:
xargs rm -rf < files.txt
O si está ejecutando Windows, use Powershell:
Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}
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_module
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'
cat files.txt | xargs sudo rm -rf
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.rdstmc
en MS Windows.
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev
$ python setup.py develop
.....
.....
Finished processing dependencies for ttr.rdstmc==0.0.1dev
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
-e hg+https://vlcinsky@bitbucket.org/vlcinsky/ttr.rdstmc@d61a9922920c508862602f7f39e496f7b99315f0#egg=ttr.rdstmc-dev
ttr.utcutils==0.1.1dev
$ pip uninstall ttr.rdstmc
Uninstalling ttr.rdstmc:
c:\python27\lib\site-packages\ttr.rdstmc.egg-link
Proceed (y/n)? y
Successfully uninstalled ttr.rdstmc
$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev
Todo lo que está escrito arriba todavía se aplica, de todos modos, hay pequeñas modificaciones disponibles ahora.
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).
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 nativo find
o simplemente ignore ese filtrado y busque el nombre en una lista un poco más larga de paquetes python detectados.
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 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.
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
y ln -s /home/tflutre/.local/bin/pip2 ~/bin
.
pip uninstall module
o python -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
en rm -rf
es 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 --
Y para ventanas:
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
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:
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
:
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.
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 instalar pip
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 el pip
símbolo del sistema, debería ver una ayuda. Puede encontrar las instrucciones de uso necesarias allí. Por ejemplo, le pip list
muestra la lista de paquetes instalados. Puedes usar
pip uninstall package_name
para desinstalar cualquier paquete que ya no quieras. Lea más aquí (documentación de pip) .
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,
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
("foo" es un ejemplo, por supuesto).
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/
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
pip uninstall <package_name>
pip unistall .
no funcionó para mí, pero lo pip uninstall <package_name>
hizo, ¡gracias!
Probablemente pueda hacer esto como alternativa: -
1) Obtenga la versión de Python -
[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55)
-> 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 -
[linux machine]# whereis python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python2.5 /usr/include/python2.4 /usr/share/man/man1/python.1.gz
-> 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
[linux machine]# cd /usr/lib/python2.4/site-packages
[linux machine]# rm -rf paramiko-1.12.0-py2.4.egg paramiko-1.7.7.1-py2.4.egg paramiko-1.9.0-py2.4.egg
Esto funcionó para mí ... Y pude desinstalar el paquete que me estaba molestando :)
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':
pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
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 ...
for i in $(less install.record);
sudo rm $i;
done;
Y listo. Desinstalado
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 ese pkg
es el paquete que desea eliminar:
rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )")
rm -rf build
Obove trabaja para python3 y elimina el paquete y su archivo * .egg-info
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).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 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.
Puede ser mejor eliminar archivos relacionados utilizando bash para leer comandos, como los siguientes:
sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"
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.