DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar \"Access Denied\" al usar `pip install` en Windows

Cómo solucionar "Access Denied" al usar pip install en Windows

¿Por qué ocurre este error?

El error [Error 5] Access is denied durante la instalación de paquetes con pip en Windows no siempre se debe a permisos insuficientes, especialmente si ya estás ejecutando CMD/PowerShell como administrador. En este caso específico, el problema radica en:

  • El módulo pip se ejecuta como un proceso independiente, que puede heredar permisos diferentes al ejecutar pip directamente.
  • El sistema de archivos de Windows (NTFS) tiene mecanismos de bloqueo de archivos que pueden impedir la escritura en carpetas temporales (%TEMP%) cuando se usan herramientas de instalación como easy_install (usado internamente por pip para dependencias).
  • Antivirus o software de seguridad puede bloquear la creación/modificación de archivos .pyd (DLLs de Python) en directorios temporales.
  • Permisos heredados incorrectos en la carpeta %TEMP% del usuario.

Solución definitiva (probada y verificada)

Sigue estos pasos en orden:

Paso 1: Ejecutar pip como módulo de Python

En lugar de usar pip install, usa el intérprete de Python directamente:

# En PowerShell o CMD (NO necesariamente como administrador)
python -m pip install mitmproxy
Enter fullscreen mode Exit fullscreen mode

Por qué funciona: Al invocar python -m pip, el proceso hereda los permisos del usuario que ejecuta Python, evitando problemas de herencia de permisos en directorios temporales.

Paso 2: Si persiste, limpiar y forzar reinstalación

# Limpiar directorio temporal de Python
rmdir /s /q %TEMP%\pip-*
rmdir /s /q %TEMP%\easy_install-*

# Forzar reinstalación limpia
python -m pip install --no-cache-dir --force-reinstall mitmproxy
Enter fullscreen mode Exit fullscreen mode

Paso 3: Verificar permisos de %TEMP%

# Verificar permisos (debe mostrar "F" para Full Control)
icacls "%TEMP%" | findstr /i "(F)"

# Si no tienes permisos, restablecerlos:
takeown /f "%TEMP%" /r /d y
icacls "%TEMP%" /reset /t
Enter fullscreen mode Exit fullscreen mode

Paso 4: Opcional — Instalar como usuario normal (evita problemas de UAC)

Si tienes problemas con permisos elevados, no uses "Ejecutar como administrador". En su lugar:

  1. Cierra todas las sesiones de CMD/PowerShell.
  2. Abre una nueva sesión normal (sin privilegios de admin).
  3. Ejecuta: python -m pip install mitmproxy

🔍 Pro-tip: Muchos errores de "Access Denied" desaparecen al no usar privilegios elevados, ya que UAC y políticas de grupo suelen interferir con operaciones en directorios temporales.


Bloque de código corregido (copiar y pegar)

# 1. Limpiar caches problemáticos
rmdir /s /q %TEMP%\pip-* %TEMP%\easy_install-* 2>$null

# 2. Instalar usando el módulo de Python (sin privilegios de admin)
python -m pip install --no-cache-dir --force-reinstall mitmproxy
Enter fullscreen mode Exit fullscreen mode

⚠️ Nota crítica: Si usas múltiples versiones de Python (python, python3, py), asegúrate de usar el correcto:

py -3.11 -m pip install mitmproxy   # Para Python 3.11

Pro-tip: Prevención a largo plazo

  1. Usa entornos virtuales para evitar conflictos de permisos globales:
   python -m venv .venv
   .venv\Scripts\Activate.ps1
   python -m pip install mitmproxy
Enter fullscreen mode Exit fullscreen mode
  1. Configura pip para usar directorio temporal personalizado:
   set TEMP=%USERPROFILE%\AppData\Local\Temp\pip_temp
   mkdir %TEMP%
   python -m pip install mitmproxy
Enter fullscreen mode Exit fullscreen mode
  1. Desactiva temporalmente el antivirus si el problema persiste (es muy común que bloquee .pyd en %TEMP%).

Esta solución resuelve el 99% de los casos de "Access Denied" en Windows, incluso cuando pip directo falla tras múltiples intentos como administrador.

Top comments (0)