Un entorno virtual es un entorno de Python aislado con sus propios paquetes instalados, separado del Python del sistema y de otros proyectos. Resuelve los conflictos de dependencias — distintos proyectos pueden usar versiones diferentes (incluso incompatibles) del mismo paquete.
El problema que resuelve
Project A needs Django 3.2
Project B needs Django 4.2
→ Installing globally, they CONFLICT — you can't have both versions system-wide.
Virtual environments give each project its OWN isolated set of packages.
Sin aislamiento, instalar paquetes globalmente provoca choques de versiones entre proyectos y puede romper herramientas del sistema que dependen de versiones específicas.
