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)
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"
🔍 ¿Qué esperas ver?
Una ruta comoC:\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
⚠️ Importante: Usa siempre
python -m venv(nopy -m venv, nivenv, ni herramientas externas comovirtualenv) 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:
- Copia
python.exedesde tu instalación actual (verifica conwhere python):
where python
# Ejemplo: C:\Users\vanessamohr\AppData\Local\Programs\Python\Python310\python.exe
- Elimina el
pip.exeroto:
del "C:\Users\vanessamohr\proyecto\venv\Scripts\pip.exe"
- Crea un nuevo launcher limpio:
python -m pip install --upgrade pip --force-reinstall --no-cache-dir
Esto regenerará
pip.exe,pip3.exe,pip.exey 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 .
Pro-tip: Evita este problema en el futuro
- Nunca muevas ni reinstales Python sin recrear entornos virtuales.
- Usa rutas absolutas en
PYTHONPATHo 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
- Usa
python -m pipen lugar depipen 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)