DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar el error de permiso al ejecutar `pip.exe` en un entorno virtual de Python en Windows

Cómo solucionar el error de permiso al ejecutar pip.exe en un entorno virtual de Python en Windows

Explicación técnica

El problema ocurre porque pip.exe en el directorio Scripts/ de tu entorno virtual es un launcher empaquetado (un archivo .exe que contiene una copia embebida de python.exe y el script pip.__main__). Cuando se crea el entorno virtual, este launcher almacena una ruta absoluta a python.exe en su interior. Si esa ruta se vuelve inválida (por ejemplo, porque se movió, desinstaló o actualizó Python), el launcher falla con un error de permisos (Access is denied) al intentar ejecutar el python.exe embebido o referenciado.

Este problema es común tras:

  • Mover o reinstalar Python.
  • Usar múltiples versiones de Python (especialmente mezclando instaladores de python.org y Microsoft Store).
  • Cambiar permisos o políticas de grupo que afecten rutas relativas o variables de entorno.

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


Pasos para solucionarlo

✅ Paso 1: Verifica la ruta embebida en pip.exe

Crea un script llamado check_pip_launcher.py con este contenido:

import sys
try:
    with open(sys.argv[1], 'rb') as f:
        data = f.read()[-4096:]
        i = data.rfind(b'PK\x05\x06')
        i0 = data.rfind(b'#!', 0, i) + 2
        i1 = data.find(b'\n', i0)
        p = data[i0:i1].strip(b'"').decode()
        print("Ruta embebida en pip.exe:", p)
except Exception as e:
    print("Error al leer pip.exe:", e)
Enter fullscreen mode Exit fullscreen mode

Ejecútalo desde CMD (no desde bash) y sin activar el entorno virtual, pasando la ruta completa a pip.exe del entorno virtual:

python check_pip_launcher.py "C:\Users\vanessamohr\proyecto\venv\Scripts\pip.exe"
Enter fullscreen mode Exit fullscreen mode

🔍 ¿Qué esperas ver?

Una ruta como C:\Users\vanessamohr\AppData\Local\Programs\Python\Python310\python.exe.

Si ves una ruta rota (por ejemplo, a una versión desinstalada de Python), ese es el problema.


✅ Paso 2: Recrea el entorno virtual (solución definitiva)

El launcher pip.exe está corrupto o apunta a una ruta inválida. La solución más limpia es regenerar el entorno virtual:

# Desactiva cualquier entorno activo
deactivate 2>nul

# Elimina el entorno actual
rmdir /s /q "C:\Users\vanessamohr\proyecto\venv"

# Crea uno nuevo con la versión correcta de Python
python -m venv "C:\Users\vanessamohr\proyecto\venv"

# Actívalo
"C:\Users\vanessamohr\proyecto\venv\Scripts\activate.bat"

# Verifica que pip.exe funcione
pip --version
Enter fullscreen mode Exit fullscreen mode

⚠️ Importante: Usa siempre python -m venv (no py -m venv, ni venv, ni herramientas externas como virtualenv) para evitar inconsistencias.


✅ Paso 3: Si no puedes recrear el entorno (alternativa rápida)

Si por alguna razón no puedes borrar el entorno, reemplaza manualmente pip.exe:

  1. Copia python.exe desde tu instalación actual (verifica con where python):
   where python
   # Ejemplo: C:\Users\vanessamohr\AppData\Local\Programs\Python\Python310\python.exe
Enter fullscreen mode Exit fullscreen mode
  1. Elimina el pip.exe roto:
   del "C:\Users\vanessamohr\proyecto\venv\Scripts\pip.exe"
Enter fullscreen mode Exit fullscreen mode
  1. Crea un nuevo launcher limpio:
   python -m pip install --upgrade pip --force-reinstall --no-cache-dir
Enter fullscreen mode Exit fullscreen mode

Esto regenerará pip.exe, pip3.exe, pip.exe y otros ejecutables con la ruta correcta.


Bloque de código corregido (comando final)

:: Elimina el entorno roto y recrea con la versión correcta
rmdir /s /q "C:\Users\vanessamohr\proyecto\venv"
python -m venv "C:\Users\vanessamohr\proyecto\venv"
call "C:\Users\vanessamohr\proyecto\venv\Scripts\activate.bat"
pip --version  # ✅ Debe funcionar sin error
pip install -e .
Enter fullscreen mode Exit fullscreen mode

Pro-tip: Evita este problema en el futuro

  • Nunca muevas ni reinstales Python sin recrear entornos virtuales.
  • Usa rutas absolutas en PYTHONPATH o variables de entorno para evitar ambigüedades.
  • Si usas múltiples versiones de Python, vincula explícitamente el entorno:
  C:\Python310\python.exe -m venv venv
Enter fullscreen mode Exit fullscreen mode
  • Usa python -m pip en lugar de pip en scripts o CI/CD: es más robusto y evita problemas con launchers.

💡 Bonus: Si usas PowerShell, evita bash (WSL) para ejecutar comandos en entornos virtuales de Windows. Usa siempre CMD o PowerShell nativos para evitar mapeos incorrectos de rutas Windows ↔ Unix.

Top comments (0)