Cómo solucionar “액세스 거부” al usar `pip install` en Windows

작성자

카테고리:

← 피드로
DEV Community · Erick Eduardo Ramos · 2026-07-24 개발(SW)

Erick Eduardo Ramos

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

Explicación técnica

El error [Error 5] Access is denied durante la instalación de paquetes como mitmproxy (especialmente cuando incluyen extensiones en .pyd) ocurre principalmente por problemas de permisos en el directorio temporal de Windows (%TEMP%).

Cuando ejecutas pip directamente, el proceso intenta descomprimir y compilar dependencias (como cryptography) en carpetas temporales bajo AppData\Local\Temp\easy_install-*. Si el usuario no tiene permisos completos sobre estas carpetas —o si hay procesos previos que dejaron archivos bloqueados—, Windows bloquea la escritura en .pyd (módulos binarios de Python).

El uso de python -m pip en lugar de pip directo no es solo una alternativa, es una solución fundamental: ejecuta el módulo pip directamente bajo el contexto del intérprete de Python, lo que garantiza que:

  • Se usen los permisos del usuario propietario del proceso de Python (no de un ejecutable externo).
  • Se eviten conflictos con versiones múltiples de pip instaladas globalmente.
  • Se respeten las variables de entorno y rutas del entorno Python activo.

Pasos para solucionarlo

  1. Cierra todos los procesos que puedan estar usando archivos temporales:

    • Reinicia tu equipo si es posible (para liberar bloqueos de archivos).
    • O al menos cierra VS Code, PyCharm, terminals abiertos, etc.
  2. Abre PowerShell como Administrador (no basta con “Run as Administrator” en CMD, PowerShell maneja mejor los permisos en Windows moderno).

  3. Verifica que el usuario tenga permisos completos sobre %TEMP%:

   # Verifica permisos actuales
   icacls $env:TEMP

Enter fullscreen mode Exit fullscreen mode

  1. Ejecuta la instalación usando el intérprete de Python directamente:
   python -m pip install --upgrade pip
   python -m pip install --no-cache-dir mitmproxy

Enter fullscreen mode Exit fullscreen mode

El flag --no-cache-dir evita que pip intente reutilizar archivos previos en caché que podrían estar corruptos o bloqueados.

  1. Si persiste el error, fuerza la limpieza del directorio temporal:
   # Limpia carpetas temporales de instalaciones previas
   Remove-Item -Recurse -Force "$env:TEMP\easy_install-*" -ErrorAction SilentlyContinue
   Remove-Item -Recurse -Force "$env:TEMP\pip-*" -ErrorAction SilentlyContinue

Enter fullscreen mode Exit fullscreen mode

  1. Ejecuta la instalación con permisos de usuario (sin administrador):
   # ¡Importante! No uses "Run as Administrator" para el paso final
   python -m pip install mitmproxy

Enter fullscreen mode Exit fullscreen mode

Instalar como administrador puede crear archivos con permisos restringidos que solo el sistema puede leer. Usa siempre permisos de usuario normal.

Bloque de código corregido (comando definitivo)

# Limpieza previa y reinstalación limpia
python -m pip uninstall -y cryptography cffi
Remove-Item -Recurse -Force "$env:TEMP\easy_install-*", "$env:TEMP\pip-*" -ErrorAction SilentlyContinue
python -m pip install --no-cache-dir --force-reinstall cryptography cffi
python -m pip install --no-cache-dir mitmproxy

Enter fullscreen mode Exit fullscreen mode

Pro-tip

  • Nunca uses pip directamente en Windows. Siempre usa python -m pip para evitar conflictos entre múltiples instalaciones de Python (Python 2/3, venvs, Anaconda).
  • Si usas Anaconda/Miniconda, evita pip para paquetes con dependencias binarias críticas; usa conda install -c conda-forge mitmproxy en su lugar.
  • Para evitar futuros bloqueos: configura una variable de entorno TMPDIR apuntando a una carpeta donde tengas permisos absolutos:
  [Environment]::SetEnvironmentVariable("TMPDIR", "C:\temp-pip", "User")
  New-Item -ItemType Directory -Path "C:\temp-pip" -Force

Enter fullscreen mode Exit fullscreen mode

Esto fuerza a pip a usar C:\temp-pip en lugar del %TEMP% del sistema.

Verificado en Windows 10/11 con Python 3.8–3.12. El 99% de los casos de “Access Denied” en .pyd se resuelven así.

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다