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
pipse ejecuta como un proceso independiente, que puede heredar permisos diferentes al ejecutarpipdirectamente. -
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 comoeasy_install(usado internamente porpippara 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
✅ 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
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
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:
- Cierra todas las sesiones de CMD/PowerShell.
- Abre una nueva sesión normal (sin privilegios de admin).
- 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
⚠️ 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
- Usa entornos virtuales para evitar conflictos de permisos globales:
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install mitmproxy
-
Configura
pippara usar directorio temporal personalizado:
set TEMP=%USERPROFILE%\AppData\Local\Temp\pip_temp
mkdir %TEMP%
python -m pip install mitmproxy
-
Desactiva temporalmente el antivirus si el problema persiste (es muy común que bloquee
.pyden%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)