DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar el error de permisos con `pip.exe` en entornos virtuales de Python en Windows

Cómo solucionar el error de permisos con pip.exe en entornos virtuales de Python en Windows

¿Por qué ocurre este error?

El problema no es un fallo de permisos de archivo real (como confirmó icacls), sino una corrupción o inconsistencia en el launcher pip.exe dentro del entorno virtual. En Windows, pip.exe no es un ejecutable independiente: es un launcher empaquetado que contiene una ruta fija a python.exe y el script __main__.py de pip embebido como ZIP.

Cuando se crea un entorno virtual, este launcher se genera apuntando a la versión exacta de python.exe usada en la creación del entorno. Si posteriormente se modifica el entorno (por ejemplo, al reinstalar Python, cambiar versiones, o mover el entorno), el launcher puede quedar apuntando a una ruta inválida o corrompida. Esto provoca que al ejecutar pip.exe, el sistema intente lanzar una ruta no válida → "Access is denied", aunque los permisos del archivo sean correctos.

El hecho de que python -m pip funcione confirma que el problema está solo en el launcher, no en pip en sí.


Pasos para solucionarlo definitivamente

✅ Paso 1: Elimina el launcher corrupto

Borra pip.exe (y pip3.exe, pipX.exe si existen) del directorio Scripts/ del entorno virtual.

# Desde PowerShell o CMD (NO bash)
Remove-Item "C:\Users\<username>\<project dir>\venv\Scripts\pip*.exe"
Enter fullscreen mode Exit fullscreen mode

⚠️ No borres python.exe ni pythonw.exe. Solo los pip*.exe.


✅ Paso 2: Regenera los launchers correctamente

Ejecuta el siguiente comando desde el entorno virtual activado, usando python -m pip install --force-reinstall pip:

# Asegúrate de estar dentro del entorno virtual (venv activado)
python -m pip install --force-reinstall --no-cache-dir pip
Enter fullscreen mode Exit fullscreen mode

Esto reinstala pip desde cero, regenerando correctamente los launchers pip.exe, pip3.exe, etc., con la ruta correcta a python.exe del entorno.

🔍 ¿Por qué funciona?

Al forzar la reinstalación, pip regenera sus launchers usando la ruta actual de sys.executable, evitando referencias rotas.


✅ Paso 3: Verifica la solución

Ejecuta directamente el launcher:

"C:\Users\<username>\<project dir>\venv\Scripts\pip.exe" --version
Enter fullscreen mode Exit fullscreen mode

Debería mostrar algo como:

pip 23.2.1 from C:\Users\<username>\<project dir>\venv\Lib\site-packages\pip (python 3.10)
Enter fullscreen mode Exit fullscreen mode

Si ves el error de nuevo, repite el paso 2.


Bloque de código corregido (comando definitivo)

# 1. Eliminar launchers corruptos
Remove-Item -Path "venv\Scripts\pip*.exe" -Force

# 2. Regenerar launchers desde el entorno activado
python -m pip install --force-reinstall --no-cache-dir pip

# 3. Verificar
venv\Scripts\pip.exe --version
Enter fullscreen mode Exit fullscreen mode

💡 Nota crítica: Ejecuta estos comandos desde CMD o PowerShell, no desde WSL/bash. Los launchers de Windows se generan con rutas absolutas en formato Windows (C:\...), y bash puede corromperlas.


Pro-tip: Evita este problema en el futuro

  • Nunca muevas o copies directorios de entornos virtuales. Si necesitas reutilizar un entorno, recrea el entorno desde cero (python -m venv venv) y reinstala dependencias.
  • Evita mezclar instaladores de Python (web vs Microsoft Store): usan rutas y metadatos distintos. Si usas Microsoft Store, crea entornos con py -3.10 -m venv venv (no con python -m venv).
  • Usa siempre python -m pip en scripts automatizados: evita depender del launcher y garantiza portabilidad entre sistemas.

🛠️ Si el problema persiste:

Ejecuta python -c "import sys; print(sys.executable)" dentro del entorno activado. Si la ruta no coincide con venv\Scripts\python.exe, tu entorno está roto. Recréalo:

deactivate && rmdir /s /q venv && python -m venv venv && venv\Scripts\activate && pip install -e .

Top comments (0)