cuando usas pip
para instalar un paquete, todos los paquetes requeridos también se instalarán con él (dependencias). ¿La desinstalación de ese paquete también elimina los paquetes dependientes?
¿Desinstalar un paquete con “pip” también elimina los paquetes dependientes?
Hossein
Puede instalar y utilizar el pip-autoremove utilidad 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
-
Desafortunadamente, todavía no tiene soporte real para Python3 (ver github.com/invl/pip-autoremove/issues/18) .
– Asmaier
6 oct 2019 a las 10:31
-
Funcionando bien para mí en Python 3 a partir de octubre de 2019.
– estratagema
21 de octubre de 2019 a las 9:24
-
@loved.by.Jesus – Estoy en python 3.8.3 y probé y todavía veo el comando ejecutado como
pip-autoremove
(guión, no guión bajo).pip_autoremove
me dacommand not found
.– bwv549
19 de junio de 2020 a las 5:38
-
no funcionó en windows
ModuleNotFoundError: No module named 'pip_autoremove'
(github.com/invl/pip-autoremove/issues/43)– lamsal
4 de febrero a las 17:23
-
pip-autoremove
ha estado en un estado roto durante un año porque sus desarrolladores no lo mantienen correctamente. Para repararlo (fuente) tienes que encontrar el archivopip_autoremove.py
que está en su directorio de instalación de python en<python_root>/Scripts/
y moverlo a<python_root>/Lib/site-packages
, entonces funcionará normalmente. @TomoyukiAota NO usarpip3-autoremove
un proyecto que lleva dos años sin actualizar y tiene tan pocas estrellas si no quieres estropear o comprometer tu sistema.– Atralb
17 de junio a las 21:11
Ingeniero
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 de specloud
y todavía están allí, pero no el specloud
paquete en sí.
Como se menciona a continuación, puede instalar y utilizar el pip-autoremove utilidad para eliminar un paquete más las dependencias no utilizadas.
-
¿Qué pasa con los paquetes de dependencia exclusivos de
specloud
¿paquete?– Fusión
8 de julio de 2019 a las 17:23
-
@Fusion Esos paquetes son la dependencia de specloud.
– Ingeniero
4 mayo 2020 a las 18:56
-
Parafraseando la pregunta de @Fusion, qué sucede si ya tiene otro paquete instalado (y ese paquete tiene sus propias dependencias), no podrá diferenciar qué dependencias pertenecen a qué paquete. Este enfoque solo funciona si tiene un entorno inicial (virtual) limpio.
– Marca
25 de agosto de 2020 a las 22:16
-
@Bengineer gracias por su respuesta. ¿Qué sucede si ya eliminé el paquete principal? … y solo entonces me di cuenta de que tengo dependencias sin usar. ¿Necesito reinstalar el padre para
pip-autoremove
eliminar las dependencias?– Lev Barenboim
17 abr a las 12:36
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
-
Aunque técnicamente esta solución lo hace eliminar con éxito todas las dependencias, como se menciona en las otras respuestas, además desinstala las dependencias que son no es exclusivo del objetivo, incluidos los instalados desde los paquetes del sistema. Por ejemplo, en mi sistema, esta secuencia de comandos finalmente falló porque el paquete de destino tenía dependencias en común con pip, por lo que pip desinstaló sus propias dependencias antes de que la secuencia de comandos pudiera finalizar y luego falló.
– cosas siniestras
17 de febrero de 2016 a las 10:52
-
Cuidado esto elimina solamente el siguiente nivel de dependencias, pero no las dependencias de esas dependencias.
– tamakisquare
9 de mayo de 2017 a las 17:19
david david
He encontrado la solución aunque para algunos puede ser 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 cambia todos los pip(s) a pip3
4to paso:
./pip-autoremove packagenamegoeshere
Al menos, esto fue lo que funcionó para mí …
Usted puede tener una oportunidad para https://github.com/cls1991/pef. Eliminará el paquete con todas sus dependencias.
-
pef solo parece funcionar en entornos virtuales, desafortunadamente.
– bajo
04/01/2018 a las 10:00
-
Es solo por consideraciones de seguridad, puede piratear el código, simplemente apague el código de protección.
– cls1991
4 de enero de 2018 a las 11:26
-
¿Se asegura de que esas dependencias estén “colgadas”, es decir, que otras distribuciones no las necesiten?
– Wim
18 oct 2018 a las 18:45
-
Sí, se basa en el conteo de referencias.
– cls1991
15 de agosto de 2019 a las 5:49
-
Hola chicos, he bifurcado y modificado el código. Encuentre el enlace a continuación. github.com/nalangekrushna/pef
– Krish
13 de septiembre de 2019 a las 4:22
-
pef solo parece funcionar en entornos virtuales, desafortunadamente.
– bajo
04/01/2018 a las 10:00
-
Es solo por consideraciones de seguridad, puede piratear el código, simplemente apague el código de protección.
– cls1991
4 de enero de 2018 a las 11:26
-
¿Se asegura de que esas dependencias estén “colgadas”, es decir, que otras distribuciones no las necesiten?
– Wim
18 oct 2018 a las 18:45
-
Sí, se basa en el conteo de referencias.
– cls1991
15 de agosto de 2019 a las 5:49
-
Hola chicos, he bifurcado y modificado el código. Encuentre el enlace a continuación. github.com/nalangekrushna/pef
– Krish
13 de septiembre de 2019 a las 4:22
¿Por qué no puedes probarlo y ver? Haría exactamente eso para responder a su pregunta, pero por alguna razón, pip no puede obtener el índice del paquete aquí en este momento.
– Thomas Vander Stichele
27 de octubre de 2011 a las 16:38
he encontrado en grupo de noticias pip que la gente de pip no quiere esta funcionalidad, al menos por ahora. ¡Que pena!
– Michel Samia
30 de abril de 2013 a las 9:19
@ThomasVanderStichele porque entonces la respuesta no estaría disponible en línea para los futuros Googlers 🙂
– Marca
10 de noviembre de 2016 a las 11:11
@Mark sería, simplemente escriba la respuesta a su propia pregunta aquí.
– Thomas Vander Stichele
23 de enero de 2017 a las 20:08
@ThomasVanderStichele: No soy el OP, pero he aquí por qué esta es una sesión de preguntas y respuestas muy legítima para SO:
pip
es a) notoriamente frágil y dependiente de la versión, también b) en algunas instalaciones de clientes con las que tuve que trabajar, se instaló con derechos de administrador (aunque los paquetes no lo eran), por lo tanto, romperlo o desinstalarlo fue un gran dolor y tuvo una oportunidad para hacerlo bien. c) la conectividad a Internet puede no ser excelente; por razones de seguridad, las máquinas corporativas a menudo tienen firewalls, por lo que no puede asumir la conectividad directa, y debe saber de antemano todo lo que necesitará y su versión, y descargarlo.– smci
13 mayo 2019 a las 8:00