¿La desinstalación de un paquete con "pip" también elimina los paquetes dependientes?

Resuelto Hossein asked hace 13 años • 11 respuestas

Cuando utiliza pippara instalar un paquete, todos los paquetes necesarios también se instalarán con él (dependencias). ¿La desinstalación de ese paquete también elimina los paquetes dependientes?

Hossein avatar Oct 27 '11 19:10 Hossein
Aceptado

Puede instalar y utilizar la utilidad pip-autoremove para eliminar un paquete más las dependencias no utilizadas.

# install pip-autoremove
pip install pip-autoremove
# remove "somepackage" plus its dependencies:
pip-autoremove somepackage -y
bwv549 avatar Dec 30 '2014 22:12 bwv549

No, no desinstala los paquetes de dependencias. Solo elimina el paquete especificado:

$ pip install specloud
$ pip freeze # all the packages here are dependencies of specloud package

hoja de parra==0.6.1
nariz==1.1.2
pinocho==0.3
nube de nubes==0.4.5

$ pip uninstall specloud
$ pip freeze

hoja de parra==0.6.1
nariz==1.1.2
pinocho==0.3

Como puede ver, esos paquetes son dependencias specloudy todavía están ahí, pero no el specloudpaquete en sí.

Como se menciona a continuación, puede instalar y usar la utilidad pip-autoremove para eliminar un paquete más las dependencias no utilizadas.

Bengineer avatar Apr 23 '2012 17:04 Bengineer

Eliminé con éxito las dependencias de un paquete usando esta línea bash:

for dep in $(pip show somepackage | grep Requires | sed 's/Requires: //g; s/,//g') ; do pip uninstall -y $dep ; done

esto funcionó en pip 1.5.4

linibou avatar Sep 21 '2015 14:09 linibou

He encontrado la solución aunque a algunos les puede resultar un poco difícil de llevar a cabo.

1er paso (para python3 y linux):

pip3 install pip-autoremove  

2do paso:

cd /home/usernamegoeshere/.local/bin/  

3er paso:

gedit /home/usernamegoeshere/.local/lib/python3.8/site-packages/pip_autoremove.py  

y cambie todos los pip(s) a pip3
4to paso:

./pip-autoremove packagenamegoeshere  

Al menos esto fue lo que funcionó para mí...

david david avatar Jun 04 '2020 15:06 david david