tutorial instalar python django pip

python - instalar - ¿Cuál es la forma más fácil de eliminar todos los paquetes instalados por pip?



pip install django version (18)

Estoy intentando arreglar uno de mis virtualenvs. Me gustaría restablecer todas las bibliotecas instaladas de nuevo a las que coinciden con la producción.

¿Hay una manera rápida y fácil de hacer esto con pip?


En Command Shell de Windows, el comando pip freeze | xargs pip uninstall -y pip freeze | xargs pip uninstall -y no funcionará. Así que para aquellos de ustedes que usan Windows, he descubierto una forma alternativa de hacerlo.

  1. Copie todos los nombres de los paquetes instalados de pip desde el comando pip freeze a un archivo .txt .
  2. Luego, vaya a la ubicación de su archivo .txt y ejecute el comando pip uninstall -r *textfile.txt*

Método 1 (con pip freeze )

pip freeze | xargs pip uninstall -y

Método 2 (con pip list )

pip list | awk ''{print $1}'' | xargs pip uninstall -y

Método 3 (con virtualenv )

virtualenv --clear MYENV


Creo que esto funciona con lo último.

virtualenv --clear MYENV


En Windows, si su path está configurada correctamente, puede usar:

pip freeze > unins && pip uninstall -y -r unins && del unins

Debería ser un caso similar para sistemas similares a Unix:

pip freeze > unins && pip uninstall -y -r unins && rm unins

Solo una advertencia de que esto no es completamente sólido ya que puede encontrarse con problemas como ''Archivo no encontrado'', pero aún así puede funcionar en algunos casos.

EDITAR: Para mayor claridad: unins es un archivo arbitrario que tiene datos escritos cuando este comando se ejecuta: pip freeze > unins

El archivo que escribió a su vez se usa para desinstalar los paquetes mencionados anteriormente con consentimiento implícito / aprobación previa a través de pip uninstall -y -r unins

El archivo finalmente se elimina al finalizar.


En mi caso, accidentalmente instalé varios paquetes a nivel mundial utilizando un pip instalado por Homebrew en macOS. La forma más fácil de revertir a los paquetes predeterminados fue una simple:

$ brew reinstall python

O, si estabas usando pip3 :

$ brew reinstall python3


Es una pregunta antigua que conozco, pero la encontré, así que para futuras referencias ahora puedes hacer esto:

pip uninstall [options] <package> ... pip uninstall [options] -r <requirements file> ...

-r, - archivo de requisitos

Desinstale todos los paquetes listados en el archivo de requisitos dado. Esta opción se puede utilizar varias veces.

De la documentación de pip versión 8.1.


Esta fue la forma más fácil para que desinstalé todos los paquetes de Python.

from pip import get_installed_distributions from os import system for i in get_installed_distributions(): system("pip3 uninstall {} -y -q".format(i.key))


Este es el comando que funciona para mí:

pip list | awk ''{print $1}'' | xargs pip uninstall -y


Esto funcionará para todos los sistemas Mac, Windows y Linux. Para obtener la lista de todos los paquetes pip en el archivo Requirements.txt (Nota: Esto sobrescribirá Requirements.txt si existe otra cosa creará uno nuevo).

pip freeze > requirements.txt

Ahora para eliminar uno por uno

pip uninstall -r requirements.txt

Si queremos eliminar todo de una vez entonces

pip uninstall -r requirements.txt -y

Si está trabajando en un proyecto existente que tiene un archivo requirements.txt y su entorno se ha desviado, simplemente reemplace los requirements.txt de los ejemplos anteriores con toberemoved.txt . Luego, una vez que haya seguido los pasos anteriores, puede usar el requirements.txt Requirements.txt para actualizar su entorno ahora limpio.

Y para un solo comando sin crear ningún archivo (como sugirió joeb).

pip uninstall -y -r <(pip freeze)


He encontrado este fragmento como una solución alternativa. Es una eliminación más elegante de las bibliotecas que rehacer el virtualenv:

pip freeze | xargs pip uninstall -y

En caso de que tenga paquetes instalados a través de VCS, debe excluir esas líneas y eliminar los paquetes manualmente (elevado de los comentarios a continuación):

pip freeze | grep -v "^-e" | xargs pip uninstall -y


La forma más rápida es rehacer el virtualenv completamente. Supongo que tiene un archivo Requirements.txt que coincide con la producción, si no:

# On production: pip freeze > reqs.txt # On your machine: rmvirtualenv MYENV mkvirtualenv MYENV pip install -r reqs.txt


Otras respuestas que usan pip list o pip freeze deben incluir --local contrario, también desinstalará los paquetes que se encuentran en los espacios de nombres comunes.

Así que aquí están los fragmentos que uso regularmente

pip freeze --local | xargs pip uninstall -y

o

pip list --local | py -x "print(x.split()[0])" | xargs pip uninstall -y

Obtenga más información sobre este comportamiento emitiendo pip freeze --help


Para usuarios de Windows, esto es lo que uso en Windows PowerShell

pip uninstall -y (pip freeze)


Pip no tiene forma de saber qué paquetes instaló y qué paquetes instaló el administrador de paquetes de su sistema. Para esto necesitarías hacer algo como esto.

para las distribuciones basadas en rpm (reemplace python2.7 con su versión de python con la que instaló pip):

find /usr/lib/python2.7/ |while read f; do if ! rpm -qf "$f" &> /dev/null; then echo "$f" fi done |xargs rm -fr

para una distribución basada en deb:

find /usr/lib/python2.7/ |while read f; do if ! dpkg-query -S "$f" &> /dev/null; then echo "$f" fi done |xargs rm -fr

Luego, para limpiar los directorios vacíos que sobran:

find /usr/lib/python2.7 -type d -empty |xargs rm -fr

Encontré que la respuesta principal es muy engañosa, ya que eliminará todos los paquetes de python (¿la mayoría?) De su distribución y probablemente lo dejará con un sistema dañado.


Quería elevar esta respuesta de una sección de comentarios porque es una de las soluciones más elegantes en el hilo. El crédito completo para esta respuesta va a joeb .

pip uninstall -y -r <(pip freeze)

Esto me funcionó muy bien para el caso de uso de borrar la carpeta de mis paquetes de usuario fuera del contexto de un virtualenv que muchas de las respuestas anteriores no manejan.

Edición: ¿Alguien sabe cómo hacer que este comando funcione en un Makefile?

Bonus: un alias de bash

Agrego esto a mi perfil de bash para mayor comodidad:

alias pipuninstallall="pip uninstall -y -r <(pip freeze)"

Entonces corre:

pipuninstallall

Alternativa para pipenv

Si estás usando pipenv puedes simplemente ejecutar:

pipenv uninstall --all


Si estás ejecutando virtualenv :

virtualenv --clear </path/to/your/virtualenv>

por ejemplo, si su virtualenv es /Users/you/.virtualenvs/projectx , entonces ejecutaría:

virtualenv --clear /Users/you/.virtualenvs/projectx

Si no sabe dónde se encuentra su entorno virtual, puede ejecutar which python desde un entorno virtual activado para obtener la ruta.


Soporte multiplataforma utilizando solo pip :

#!/usr/bin/env python from sys import stderr from pip.commands.uninstall import UninstallCommand from pip import get_installed_distributions pip_uninstall = UninstallCommand() options, args = pip_uninstall.parse_args([ package.project_name for package in get_installed_distributions() if not package.location.endswith(''dist-packages'') ]) options.yes = True # Don''t confirm before uninstall # set `options.require_venv` to True for virtualenv restriction try: print pip_uninstall.run(options, args) except OSError as e: if e.errno != 13: raise e print >> stderr, "You lack permissions to uninstall this package. Perhaps run with sudo? Exiting." exit(13) # Plenty of other exceptions can be thrown, e.g.: `InstallationError` # handle them if you want to.