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
⚠️ En Windows, usa
cmd.exeo PowerShell (no bash) para ejecutar estos comandos si usasrm, o usadel: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
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
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 .
✅ 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.txty recrea el entorno en el destino. -
Usa
python -m pipen lugar depipcomo práctica estándar. Es más robusto y evita problemas con launchers:
python -m pip install -e .
- Si trabajas con múltiples versiones de Python, usa
py -X.Ypara invocar la versión exacta:
py -3.10 -m venv venv
🔍 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 quepython -m pipfunciona ypip.exefalla. La solución definitiva es regenerar el entorno virtual con--clearo recrearlo desde cero.
Top comments (0)