DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar el error de permisos al ejecutar `pip.exe` en entorno virtual (Python 3.10 en Windows)

Cómo solucionar el error de permisos al ejecutar pip.exe en entorno virtual (Python 3.10 en Windows)

Explicación técnica

El problema ocurre porque el archivo pip.exe en venv\Scripts\ es un launcher empaquetado que contiene una ruta fija a python.exe y un script __main__.py embebido. Cuando se crea el entorno virtual, este launcher se construye con la ruta absoluta al python.exe que se usó para crearlo.

Si esa ruta se vuelve inválida (por ejemplo, al cambiar de versión de Python, reinstalar, o mover el entorno), el launcher intenta ejecutar un python.exe que ya no existe o al que no tiene permisos, causando el error "Access is denied" o "Fatal error in launcher".

El hecho de que python -m pip funcione confirma que el problema está solo en el launcher pip.exe, no en los permisos del sistema ni en la instalación de Python.

Pasos para solucionarlo

Paso 1: Eliminar el entorno virtual existente

# Desde la raíz del proyecto
rm -rf venv
# En Windows CMD:
# rmdir /s /q venv
Enter fullscreen mode Exit fullscreen mode

Paso 2: Crear un nuevo entorno virtual con la versión correcta de Python

# Asegúrate de usar la versión específica que necesitas (3.10.11)
# Verifica primero la ruta exacta de python.exe:
where python
# o
python --version

# Luego crea el entorno explícitamente con la versión deseada:
python -m venv venv
# Si tienes múltiples instalaciones, usa la ruta completa:
"C:\Path\To\Python310\python.exe" -m venv venv
Enter fullscreen mode Exit fullscreen mode

Paso 3: Verificar que pip.exe funcione correctamente

# Activa el entorno
venv\Scripts\activate

# Verifica pip.exe directamente
pip --version
# o
"C:\ruta\al\proyecto\venv\Scripts\pip.exe" --version
Enter fullscreen mode Exit fullscreen mode

Paso 4: (Opcional) Validar la integridad del launcher

Si quieres verificar que el launcher apunta al python.exe correcto, usa este script en CMD (no en bash):

# Guarda como check_pip.py
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("Embedded python path:", p)
except Exception as e:
    print("Error:", e)
Enter fullscreen mode Exit fullscreen mode

Ejecútalo así:

python check_pip.py "venv\Scripts\pip.exe"
Enter fullscreen mode Exit fullscreen mode

La salida debe ser una ruta válida a python.exe dentro del mismo entorno virtual (ej: C:\...\venv\Scripts\python.exe).

Bloque de código corregido

# Solución completa en una línea (CMD/PowerShell)
rmdir /s /q venv && python -m venv venv && venv\Scripts\activate && pip install -e .
Enter fullscreen mode Exit fullscreen mode

Pro-tip

  • Nunca muevas ni copies entornos virtuales: Se crean con rutas absolutas y se rompen al moverse.
  • Usa python -m pip como estándar: Es más robusto que invocar pip.exe directamente, especialmente en entornos compartidos o CI/CD.
  • Evita mezclar instalaciones de Python: Si usas múltiples versiones, considera usar py -3.10 -m venv venv en Windows (la herramienta py de lanzador de Python) para asegurar consistencia.
  • En entornos corporativos: Los antivirus o políticas de grupo pueden bloquear ejecutables empaquetados como pip.exe. Si el problema persiste, prueba deshabilitar temporalmente el antivirus para descartarlo.

Top comments (0)