Cómo solucionar el error de permiso al ejecutar pip.exe en un entorno virtual de Python (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 incrustado. Cuando se crea el entorno virtual, este launcher se genera con la ruta absoluta al python.exe que se usó para crearlo.
Si después de crear el entorno virtual:
- Se mueve el entorno (por ejemplo, al cambiar de disco, usuario o carpeta),
- Se reinstala Python en otra ubicación,
- O se usa una versión distinta de Python (especialmente si se instaló desde Microsoft Store, que usa rutas dinámicas como
C:\Users\<user>\AppData\Local\Microsoft\WindowsApps\python.exe),
...entonces el launcher pip.exe sigue apuntando a una ruta obsoleta o inaccesible, causando el error "Access is denied" al intentar ejecutarlo, incluso si los permisos del archivo son correctos.
Este es un problema conocido en Windows con lanzadores empaquetados (como pip.exe, pythonw.exe, etc.) y es especialmente común con instalaciones de Python desde Microsoft Store, ya que usan redirecciones de alias (python.exe → WindowsApps\...) que se rompen al cambiar de contexto.
Pasos para solucionarlo
✅ Paso 1: Verifica si el problema es el launcher (no los permisos)
Ejecuta en CMD (¡no en bash!):
"C:\ruta\completa\al\venv\Scripts\pip.exe" -V
Si obtienes "Access is denied", el problema está en el launcher, no en permisos (como confirmó el usuario con icacls).
✅ Paso 2: Recrea el entorno virtual con la versión correcta de Python
No uses el python.exe de Microsoft Store para crear entornos virtuales. Usa siempre el instalador oficial de python.org (o el de tu distribución corporativa), y asegúrate de que esté en el PATH antes de WindowsApps.
- Desinstala Python de Microsoft Store (si no lo necesitas para otras apps).
- Descarga e instala Python 3.10.11 desde python.org.
- Verifica que el
python.execorrecto se use:
where python
Debe mostrar algo como C:\Python310\python.exe, no C:\Users\...\AppData\Local\Microsoft\WindowsApps\python.exe.
- Elimina el entorno virtual actual:
rmdir /s /q "C:\ruta\al\proyecto\venv"
- Crea el entorno desde cero:
cd C:\ruta\al\proyecto
python -m venv venv
✅ Paso 3: Verifica que pip.exe funcione
Activa el entorno y ejecuta:
venv\Scripts\activate
"C:\ruta\al\proyecto\venv\Scripts\pip.exe" -V
Debería mostrar algo como:
pip 23.2.1 from C:\ruta\al\proyecto\venv\Lib\site-packages\pip (python 3.10)
✅ Paso 4: Usa python -m pip como fallback (recomendado)
Aunque el launcher funcione, es más robusto usar siempre:
python -m pip install -e .
Esto evita problemas con lanzadores corruptos o desactualizados, ya que usa directamente el python.exe del entorno.
Bloque de código corregido (comandos finales)
:: Desinstala Python de Microsoft Store (opcional, pero recomendado)
:: Luego instala Python 3.10.11 desde python.org
:: Verifica el python correcto
where python
:: Elimina el entorno roto
rmdir /s /q "C:\ruta\al\proyecto\venv"
:: Crea el entorno con el python correcto
cd C:\ruta\al\proyecto
python -m venv venv
:: Activa y prueba
venv\Scripts\activate
"C:\ruta\al\proyecto\venv\Scripts\pip.exe" -V
:: Usa siempre este formato para evitar futuros problemas
python -m pip install -e .
Pro-tip: Evita este problema en el futuro
- Nunca muevas o copies manualmente un entorno virtual. Si necesitas moverlo, recrea el entorno.
-
Evita Microsoft Store para desarrollo Python. Usa instaladores
.exede python.org o administradores comopyenv-win. -
Si usas múltiples versiones de Python, usa
py -3.10 -m venv venvpara garantizar la versión correcta. -
Guarda el hash del
python.exeoriginal en un archivovenv/.python-versionpara detectar desincronizaciones rápidamente:
certutil -hashfile "C:\ruta\al\venv\Scripts\python.exe" SHA256 > venv/.python-version
🔑 Clave: El problema no es de permisos, es de rutas rotas en lanzadores empaquetados. Recrear el entorno con el
python.execorrecto soluciona el 99% de los casos.
Top comments (0)