Estoy tratando de desinstalar todos los paquetes de django en mi entorno de superusuario para asegurarme de que todas mis dependencias de aplicaciones web estén instaladas en mi virtualenv.
sudo su
sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall
Pero pip quiere confirmar la desinstalación de cada paquete, y no parece haber una -y
opción para pip. ¿Existe una mejor manera de desinstalar un lote de módulos de Python? ¿Es rm -rf .../site-packages/
una forma adecuada de hacerlo? ¿Existe una alternativa de easy_install?
Alternativamente, ¿sería mejor forzar a pip a instalar todas las dependencias en virtualenv en lugar de depender de los módulos de Python del sistema para cumplir con esas dependencias, por ejemplo pip --upgrade install
, pero forzando incluso a que se instalen versiones igualmente antiguas para anular cualquier módulo del sistema? Intenté activar mi virtualenv y luego pip install --upgrade -r requirements.txt
parece que instala las dependencias, incluso las que existen en la ruta de mi sistema, pero no puedo estar seguro si eso es porque los módulos de mi sistema eran viejos. Y man pip
no parece garantizar este comportamiento (es decir, instalar la misma versión de un paquete que ya existe en los paquetes del sitio del sistema).
yes
es tan útil.yes | sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall
debido a que losyes
ES serían tragados por elpip freeze
no alxargs
argumento / comando,pip uninstall
.pip freeze > all_to_uninstall.txt
yes | pip uninstall -r all_to_uninstall.txt
Si desea desinstalar todos los paquetes de
requirements.txt
,fuente
Si. No se meta demasiado con los paquetes instalados del sistema incorporado. Muchos de los paquetes del sistema, particularmente en OS X (incluso debian y las variedades derivadas) dependen demasiado de ellos.
No debería ser un gran problema si hay algunos paquetes más instalados dentro del venv que ya están en el paquete del sistema, especialmente si son de una versión diferente. Ese es el objetivo de virtualenv.
No, no instala los paquetes que ya existen en la instalación principal a menos que haya usado la
--no-site-packages
bandera para crearlo, o las versiones requeridas y actuales sean diferentes.fuente
Lakshman Prasad tenía razón
pip --upgrade
y / ovirtualenv --no-site-packages
es el camino a seguir. Desinstalar los módulos de Python en todo el sistema es malo.La
--upgrade
opción de pip instala los módulos requeridos en el entorno virtual, incluso si ya existen en el entorno del sistema, e incluso si la versión requerida o la última versión disponible es la misma que la versión del sistema.Y, el uso de la opción --no-site-packages al crear el entorno virtual garantiza que las dependencias faltantes no puedan enmascararse por la presencia de módulos faltantes en la ruta del sistema. Esto ayuda a exponer problemas durante la migración de un módulo de un paquete a otro, por ejemplo, pinax.apps.groups -> django-groups, especialmente cuando el problema es con declaraciones de carga de templatetags en django que buscan todos los módulos disponibles para directorios de templatetags y las definiciones de etiquetas dentro.
fuente
puede omitir confirmar
fuente