Cómo solucionar el error de permisos al ejecutar pip.exe en un entorno virtual de Python (Windows)
¿Por qué ocurre este error?
El problema no es un error de permisos tradicional (como falta de ACL o propiedad incorrecta), sino una corrupción o inconsistencia en el launcher pip.exe dentro del entorno virtual. Este archivo es un stub empaquetado que contiene una ruta fija a python.exe y un script __main__.py embebido. Cuando se crea el entorno virtual, pip.exe se genera apuntando a la versión específica de Python usada en ese momento.
Si:
- Se instalan/desinstalan múltiples versiones de Python (especialmente desde distintas fuentes: python.org, Microsoft Store),
- Se mueve o copia el entorno virtual,
- Hay conflictos de rutas en el
PATHo se usa una versión de Python distinta a la del momento de creación del entorno,
...entonces pip.exe puede quedar referenciando a un python.exe que ya no existe o que ya no es accesible (por ejemplo, eliminado, movido o bloqueado por permisos de archivo abierto).
El error "Access is denied." al ejecutar directamente pip.exe desde CMD (aunque python -m pip funcione) es la firma clásica de este problema.
Solución definitiva
✅ Paso 1: Verifica si el problema es el launcher
Ejecuta en CMD (no en bash):
"C:\Users\<tu-usuario>\<tu-proyecto>\venv\Scripts\pip.exe" -V
Si obtienes "Access is denied.", el launcher está corrupto o desactualizado.
✅ Paso 2: Regenera pip.exe correctamente
No copies ni muevas el entorno virtual. En su lugar, recrea los launchers con la versión correcta de Python:
- Desactiva cualquier entorno virtual activo.
- Abre CMD como administrador (solo para asegurar permisos, no es obligatorio si tu usuario tiene control total).
- Ejecuta:
python -m venv --upgrade "C:\Users\<tu-usuario>\<tu-proyecto>\venv"
Esto regenera todos los launchers (
pip.exe,pythonw.exe, etc.) usando la versión de Python que esté en tuPATHactual.⚠️ Importante: Asegúrate de que el
pythonque ejecuta este comando sea exactamente el mismo que usaste al crear el entorno (o el que deseas usar ahora). Verifica conwhere python.
✅ Paso 3: Verifica que funcione
Ejecuta:
"C:\Users\<tu-usuario>\<tu-proyecto>\venv\Scripts\pip.exe" --version
Debería mostrar algo como:
pip 23.2.1 from C:\Users\<usuario>\<proyecto>\venv\Lib\site-packages\pip (python 3.10)
✅ Paso 4: Usa python -m pip como fallback (recomendado)
Aunque el launcher esté arreglado, evita usar pip directamente en entornos virtuales en Windows. Usa siempre:
python -m pip install -e .
Esto garantiza que se use el pip asociado al python del entorno, sin depender del launcher.
Bloque de código corregido (para automatizar)
Si necesitas una solución rápida y repetible (por ejemplo, en scripts CI/CD o al reiniciar un entorno):
:: Elimina los launchers corruptos y regenera
rmdir /S /Q "C:\Users\<usuario>\<proyecto>\venv"
python -m venv "C:\Users\<usuario>\<proyecto>\venv"
call "C:\Users\<usuario>\<proyecto>\venv\Scripts\activate.bat"
python -m pip install --upgrade pip setuptools wheel
python -m pip install -e .
💡 Nota:
rmdir /S /Qes más seguro que borrar soloScripts\pip.exe, porque evita inconsistencias en otros launchers (easy_install,pydoc, etc.).
Pro-tip: Evita este problema a largo plazo
- Nunca mezcles fuentes de Python (python.org + Microsoft Store). Usa una sola instalación oficial.
-
Evita mover o copiar entornos virtuales. Si necesitas portabilidad, usa
pip freeze > requirements.txty recrea el entorno en el destino. -
Usa
py -3.10 -m venv venvpara asegurar que se use la versión exacta de Python deseada (ej.py -3.10es el launcher de Python 3.10). -
En entornos corporativos, verifica si políticas de seguridad (como AppLocker o Windows Defender Application Control) bloquean ejecución de archivos empaquetados (como
pip.exe).
✅ Conclusión: El problema no es de permisos del archivo, sino de inconsistencia interna del launcher. La solución es regenerarlo con
python -m venv --upgrade, y usarpython -m pipcomo práctica estándar.
Top comments (0)