DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

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

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.exeWindowsApps\...) 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
Enter fullscreen mode Exit fullscreen mode

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.

  1. Desinstala Python de Microsoft Store (si no lo necesitas para otras apps).
  2. Descarga e instala Python 3.10.11 desde python.org.
  3. Verifica que el python.exe correcto se use:
   where python
Enter fullscreen mode Exit fullscreen mode

Debe mostrar algo como C:\Python310\python.exe, no C:\Users\...\AppData\Local\Microsoft\WindowsApps\python.exe.

  1. Elimina el entorno virtual actual:
   rmdir /s /q "C:\ruta\al\proyecto\venv"
Enter fullscreen mode Exit fullscreen mode
  1. Crea el entorno desde cero:
   cd C:\ruta\al\proyecto
   python -m venv venv
Enter fullscreen mode Exit fullscreen mode

✅ Paso 3: Verifica que pip.exe funcione

Activa el entorno y ejecuta:

venv\Scripts\activate
"C:\ruta\al\proyecto\venv\Scripts\pip.exe" -V
Enter fullscreen mode Exit fullscreen mode

Debería mostrar algo como:

pip 23.2.1 from C:\ruta\al\proyecto\venv\Lib\site-packages\pip (python 3.10)
Enter fullscreen mode Exit fullscreen mode

✅ Paso 4: Usa python -m pip como fallback (recomendado)

Aunque el launcher funcione, es más robusto usar siempre:

python -m pip install -e .
Enter fullscreen mode Exit fullscreen mode

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 .
Enter fullscreen mode Exit fullscreen mode

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 .exe de python.org o administradores como pyenv-win.
  • Si usas múltiples versiones de Python, usa py -3.10 -m venv venv para garantizar la versión correcta.
  • Guarda el hash del python.exe original en un archivo venv/.python-version para detectar desincronizaciones rápidamente:
  certutil -hashfile "C:\ruta\al\venv\Scripts\python.exe" SHA256 > venv/.python-version
Enter fullscreen mode Exit fullscreen mode

🔑 Clave: El problema no es de permisos, es de rutas rotas en lanzadores empaquetados. Recrear el entorno con el python.exe correcto soluciona el 99% de los casos.

Top comments (0)