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
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
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
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)
Ejecútalo así:
python check_pip.py "venv\Scripts\pip.exe"
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 .
Pro-tip
- Nunca muevas ni copies entornos virtuales: Se crean con rutas absolutas y se rompen al moverse.
-
Usa
python -m pipcomo estándar: Es más robusto que invocarpip.exedirectamente, especialmente en entornos compartidos o CI/CD. -
Evita mezclar instalaciones de Python: Si usas múltiples versiones, considera usar
py -3.10 -m venv venven Windows (la herramientapyde 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)