External Publication
Visit Post

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

DEV Community [Unofficial] June 28, 2026
Source

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 PATH o 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:

  1. Desactiva cualquier entorno virtual activo.

  2. Abre CMD como administrador (solo para asegurar permisos, no es obligatorio si tu usuario tiene control total).

  3. 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 tu PATH actual.

⚠️ Importante : Asegúrate de que el python que ejecuta este comando sea exactamente el mismo que usaste al crear el entorno (o el que deseas usar ahora). Verifica con where 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 usarpip 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 /Q es más seguro que borrar solo Scripts\pip.exe, porque evita inconsistencias en otros launchers (easy_install, pydoc, etc.).

Pro-tip: Evita este problema a largo plazo

  1. Nunca mezcles fuentes de Python (python.org + Microsoft Store). Usa una sola instalación oficial.
  2. Evita mover o copiar entornos virtuales. Si necesitas portabilidad, usa pip freeze > requirements.txt y recrea el entorno en el destino.
  3. Usapy -3.10 -m venv venv para asegurar que se use la versión exacta de Python deseada (ej. py -3.10 es el launcher de Python 3.10).
  4. 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 usar python -m pip como práctica estándar.

Discussion in the ATmosphere

Loading comments...