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 en Windows

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 un entorno virtual es un launcher empaquetado (un ejecutable ZIP autocontenido) que incluye una ruta fija a python.exe y el script __main__.py de pip. Cuando este launcher se rompe o apunta a una versión incorrecta/inaccesible de python.exe, falla con el error Access is denied, incluso si los permisos del archivo son correctos.

Esto suele suceder cuando:

  • Se instalan múltiples versiones de Python y se mezclan rutas (especialmente entre instaladores de python.org y Microsoft Store).
  • Se crea el entorno virtual con una versión de Python, y luego se desinstala esa versión (pero el launcher sigue apuntando a una ruta inválida).
  • Se copia o mueve el entorno virtual sin regenerar los launchers.
  • Hay corrupción en el archivo pip.exe (por ejemplo, por un fallo de disco o antivirus).

El hecho de que python -m pip funcione correctamente confirma que el problema está específicamente en el launcher pip.exe, no en pip en sí ni en los permisos del sistema.


Pasos para solucionarlo

✅ Paso 1: Eliminar los launchers corruptos del entorno virtual

# En el directorio raíz del proyecto (donde está tu venv)
rm -rf venv/Scripts/pip.exe
rm -rf venv/Scripts/pip3.exe
rm -rf venv/Scripts/pip-script.py
rm -rf venv/Scripts/pip3-script.py
Enter fullscreen mode Exit fullscreen mode

⚠️ En Windows, usa cmd.exe o PowerShell (no bash) para ejecutar estos comandos si usas rm, o usa del:

del /Q "venv\Scripts\pip.exe"
del /Q "venv\Scripts\pip3.exe"
del /Q "venv\Scripts\pip-script.py"
del /Q "venv\Scripts\pip3-script.py"

✅ Paso 2: Regenerar los launchers correctamente

# Asegúrate de no tener activado el entorno virtual
# Ejecuta desde fuera del venv:
python -m venv --clear venv
Enter fullscreen mode Exit fullscreen mode

Esto recrea todo el entorno desde cero, incluyendo launchers válidos.

Si ya tienes dependencias instaladas y no quieres perderlas, usa --upgrade-deps (Python ≥3.9):

python -m venv --upgrade-deps venv

✅ Paso 3: Verificar que pip.exe funciona

"C:\Users\<tu_usuario>\<ruta_proyecto>\venv\Scripts\pip.exe" --version
Enter fullscreen mode Exit fullscreen mode

Debería mostrar algo como:

pip 23.2.1 from C:\Users\...\venv\Lib\site-packages\pip (python 3.10)


Bloque de código corregido (comando final para reinstalar en modo editable)

cd <tu_directorio_proyecto>
venv\Scripts\activate
pip install -e .
Enter fullscreen mode Exit fullscreen mode

Ahora funcionará sin errores de permiso.


Pro-tip: Evita este problema en el futuro

  • Nunca mezcles instaladores de Python.org y Microsoft Store en el mismo sistema. Usa solo uno (recomendado: instalador desde python.org).
  • Evita mover o copiar entornos virtuales. Si necesitas portabilidad, usa pip freeze > requirements.txt y recrea el entorno en el destino.
  • Usa python -m pip en lugar de pip como práctica estándar. Es más robusto y evita problemas con launchers:
  python -m pip install -e .
Enter fullscreen mode Exit fullscreen mode
  • Si trabajas con múltiples versiones de Python, usa py -X.Y para invocar la versión exacta:
  py -3.10 -m venv venv
Enter fullscreen mode Exit fullscreen mode

🔍 Nota clave: El script de diagnóstico de Eryk Sun es útil para inspeccionar el contenido interno de pip.exe, pero no es necesario ejecutarlo si ya has confirmado que python -m pip funciona y pip.exe falla. La solución definitiva es regenerar el entorno virtual con --clear o recrearlo desde cero.

Top comments (0)