Cómo instalar Python en Mac, actualizarlo y usar VENV (2026)
Guía paso a paso para instalar Python en Mac con Homebrew, actualizar a la última versión y configurar un entorno virtual de Python (venv) para tus proyectos.
Actualizado Publicado 17 min de lectura

Si has intentado hacer pip install de algo en un Mac recientemente, te habrás topado con el error externally-managed-environment. Desde Python 3.12, Homebrew sigue PEP 668, lo que significa que los entornos virtuales ya no son opcionales. Son obligatorios. Esta guía te lleva paso a paso por cómo instalar Python en Mac con Homebrew, configurar tu PATH para que python funcione, actualizar entre versiones sin romper nada y configurar venv correctamente para tus proyectos.
Actualizado para 2026
Python 3.14 es la versión estable actual (lanzada en octubre de 2025). La fórmula python por defecto de Homebrew ahora instala 3.14.x. PEP 668 se aplica en todas las compilaciones de Homebrew con Python 3.12+. pip install fuera de un venv fallará por diseño.
Antes de empezar: requisitos previos
Comprueba tu versión de macOS y la arquitectura (Apple Silicon vs Intel)
Homebrew se instala en ubicaciones diferentes según el procesador de tu Mac:
| Tipo de Mac | Prefijo de Homebrew | Ruta del binario de Python |
|---|---|---|
| Apple Silicon (M1/M2/M3/M4) | /opt/homebrew/ |
/opt/homebrew/bin/python3 |
| Intel | /usr/local/ |
/usr/local/bin/python3 |
Comprueba cuál tienes:
uname -marm64→ Apple Siliconx86_64→ Intel
Apple Silicon vs Intel
Todos los comandos de esta guía usan rutas de Apple Silicon (/opt/homebrew/). Si estás en Intel, sustituye por /usr/local/ donde corresponda. Los comandos en sí (brew install, python3, etc.) son idénticos.
Si quieres una mejor experiencia de terminal antes de empezar, considera configurar primero un terminal de desarrollo moderno para Mac.
Instala Xcode Command Line Tools
macOS incluye su propio Python 3 (instalado mediante Xcode Command Line Tools, normalmente 3.9.x). Necesitas las CLT para que Homebrew funcione, pero no elimines el Python del sistema. Las herramientas de macOS dependen de él.
xcode-select --installHaz clic en “Instalar” en el diálogo. Esto tarda unos minutos.
Verifica que se instaló:
xcode-select -pSalida esperada: /Library/Developer/CommandLineTools
No elimines el Python del sistema
macOS usa su Python 3 integrado para herramientas y scripts del sistema. Homebrew se instala junto a él, no encima. Nunca borres ni modifiques /usr/bin/python3.
Instala Homebrew en Mac
Homebrew es el gestor de paquetes que hace que instalar Python sea sencillo. Si aún no lo tienes:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"En Apple Silicon, Homebrew añade su entrada de PATH a ~/.zprofile automáticamente. Sigue las instrucciones post-instalación que aparecen en el terminal. Puede que necesites ejecutar:
eval "$(/opt/homebrew/bin/brew shellenv)"Comprueba que Homebrew está en buen estado:
brew doctorEsperado: Your system is ready to brew.
Si estás personalizando tu shell, potencia tu terminal Zsh con plugins útiles y activa el resaltado de sintaxis en Zsh para una mejor experiencia.
Instala la última versión de Python en Mac con Homebrew
Con Homebrew listo, instala la última versión estable de Python:
brew install pythonEsto instala Python 3.14.x (la versión estable actual a fecha de 2026), junto con pip, setuptools y wheel.
Verifica tu instalación de Python
Ejecuta estas comprobaciones para confirmar que todo funciona:
python3 –version→ debería mostrarPython 3.14.xwhich python3→ debería mostrar/opt/homebrew/bin/python3(Apple Silicon)which pip3→ debería mostrar/opt/homebrew/bin/pip3python –version→ funciona tras la configuración del PATH (ver la siguiente sección)
python3 --version
which python3
which pip3Salida esperada:
Python 3.14.6
/opt/homebrew/bin/python3
/opt/homebrew/bin/pip3Configura tu PATH para Python en Mac
Esto es lo que nadie te cuenta: después de brew install python, el comando python3 funciona, pero python NO. Verás:
zsh: command not found: pythonHomebrew instala los enlaces simbólicos sin versión (python, pip) en un directorio aparte que no está en tu PATH por defecto. Arréglalo así:
# Añade los comandos sin versión del Python de Homebrew al PATH
echo 'export PATH="$(brew --prefix python)/libexec/bin:$PATH"' >> ~/.zprofile
source ~/.zprofile¿`python`: command not found?
Es lo esperado antes de configurar el PATH. La solución es la línea export PATH de arriba. Añádela a ~/.zprofile (para shells de inicio de sesión) o a ~/.zshrc (para shells interactivos). Cualquiera de las dos funciona en Terminal.app.
Verifica:
python --versionDebería mostrar la misma versión que python3 --version.
Instala una versión específica de Python en Mac
A veces un proyecto requiere una versión específica de Python. Homebrew ofrece fórmulas versionadas para esto.
Cómo buscar versiones de Python disponibles en Homebrew
brew search python@Verás entradas desde [email protected] hasta [email protected]. Para la lista actualizada con los números de versión exactos:
Instala la versión que necesites. Por ejemplo, Python 3.13:
brew install [email protected]El comando versionado funciona inmediatamente después de la instalación:
python3.13 --versionPython 3.13.14No hace falta enlazar nada. Puedes usar python3.13 directamente en tus comandos y entornos virtuales.
Enlazar fórmulas de Python keg-only
Las fórmulas versionadas de Python (como [email protected]) son “keg-only”. Homebrew no las enlaza a tu PATH por defecto. Si intentas hacer brew link de una y ya hay otra versión de Python enlazada, obtendrás un error:
Error: Cannot link [email protected]Si realmente necesitas que python3 apunte a otra versión:
# Desenlaza primero la versión actual
brew unlink python
# Enlaza la versión que quieras
brew link --force [email protected]Reenlazar cambia `python3` globalmente
Después de brew link --force [email protected], el comando python3 apuntará a 3.13 en lugar de 3.14. Esto afecta a todas tus sesiones de terminal. En la mayoría de los casos, es más sencillo usar directamente el comando versionado (python3.13) y evitar el reenlazado por completo.
Actualiza Python a la última versión en Mac
Aquí es donde la mayoría de las guías se equivocan, incluida la versión anterior de este artículo.
La verdad sobre brew upgrade python (versiones mayores vs. parches)
brew upgrade python no salta entre versiones mayores. Actualiza al último parche de la fórmula que tengas instalada.
# Actualiza el índice de paquetes de Homebrew
brew update
# Actualiza al último parche de la fórmula actual (p. ej., de 3.14.5 a 3.14.6)
brew upgrade pythonVerifica:
python3 --versionVersiones mayores vs. parches
brew upgrade python NO actualizará de Python 3.13 a 3.14. Para cambiar de versión mayor, debes ejecutar brew install [email protected] explícitamente. Este es el error de concepto n.º 1 al actualizar Python con Homebrew.
Para saltar de una versión mayor a otra:
# Instala la nueva versión mayor
brew install [email protected]
# Úsala con el comando versionado
python3.14 --versionFija Python para evitar actualizaciones accidentales
Cuando Homebrew actualiza otros paquetes, a veces puede actualizar Python como dependencia. Esto cambia la ruta del binario de Python, lo que rompe los entornos virtuales existentes. Fija tu versión de Python para evitarlo:
# Fijar evita actualizaciones accidentales
brew pin [email protected]
# Comprueba qué está fijado
brew list --pinned
# Desfíjala cuando estés listo para actualizar
brew unpin [email protected]¿Por qué se rompió mi entorno virtual?
Cuando Homebrew actualiza Python (incluso una versión de parche), puede cambiar la ruta absoluta al binario de Python dentro de tu .venv. Como los venv guardan rutas absolutas en pyvenv.cfg y en los scripts de activación, el venv antiguo puede dejar de funcionar tras una actualización.
Solución: recrea el venv y reinstala las dependencias.
rm -rf .venv
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtPrevención: usa brew pin en tu fórmula de Python.
Entendiendo PEP 668: por qué necesitas entornos virtuales
Esta es la sección que me hubiera gustado encontrar cuando me topé con el error por primera vez. Si has intentado instalar un paquete de Python globalmente con pip y te has llevado un muro de texto rojo, aquí está el porqué.
El error externally-managed-environment explicado
Desde Python 3.12, Homebrew marca su instalación de Python como “gestionada externamente” (según PEP 668). Esto significa:
pip install requestsDa como resultado:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
xyz, where xyz is the package you are trying to install.Esto no es un bug. Es una protección deliberada. El Python de Homebrew está gestionado por Homebrew. Permitir que pip instale paquetes globalmente podría entrar en conflicto con los paquetes gestionados por Homebrew y romper tu sistema.
La solución: usa un entorno virtual (para las dependencias del proyecto) o pipx (para herramientas CLI). Ambos se cubren en las siguientes secciones.
¿Error `externally-managed-environment`?
Es un comportamiento esperado desde Python 3.12, no un fallo. Activa un entorno virtual antes de usar pip install, o usa pipx para herramientas CLI globales. Consulta las siguientes secciones para ambos enfoques.
Referencia: documentación de Homebrew and Python.
Ejecuta Python en VENV en Mac
Los entornos virtuales son ahora la forma estándar (y obligatoria) de gestionar las dependencias de proyectos Python. Este es el flujo de trabajo completo.
Crea un entorno virtual de Python en Mac
Ve al directorio de tu proyecto y crea un venv:
cd ~/my-project
python3 -m venv .venv¿Por qué `.venv`?
.venv es la convención moderna. Es lo que VS Code, PyCharm, uv y Poetry detectan automáticamente. Está oculto por defecto en macOS (por el punto inicial), y es el nombre que verás en la mayoría de los proyectos Python en GitHub. Puedes usar un nombre personalizado si lo prefieres, pero .venv es el estándar por una razón.
Activa y usa tu entorno virtual
source .venv/bin/activateTu prompt del terminal cambia para mostrar el entorno activo:
(.venv) user@mac my-project %Verifica que funciona:
which pythonDebería mostrar: /Users/youruser/my-project/.venv/bin/python
Ahora pip install funciona sin errores de PEP 668:
pip install requestsInstala paquetes y congela los requisitos
Este es el flujo de trabajo práctico que faltaba en el artículo antiguo:
# Instala paquetes dentro de tu venv activo
pip install requests pandas fastapi
# Congela las dependencias actuales en un archivo
pip freeze > requirements.txtEl archivo requirements.txt permite a cualquiera recrear el mismo entorno:
# En otra máquina (o tras clonar un repositorio):
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt¿Usar uv en lugar de pip?
uv es un reemplazo directo de pip que es 10-100 veces más rápido. Instálalo con brew install uv y usa:
uv pip install requests pandas
uv pip freeze > requirements.txt
uv venv # crea venvs más rápido que python -m venvPara una guía completa, consulta uv, un gestor de paquetes de Python moderno.
Desactiva el entorno virtual
Cuando termines de trabajar:
deactivateTu prompt vuelve a la normalidad. Los paquetes permanecen instalados en .venv/. No se pierde nada.
Añade .venv a .gitignore
Nunca subas tu entorno virtual a git. Añade estas entradas a tu .gitignore:
.venv/
venv/
env/- Añade
.venv/a.gitignore - Añade también
venv/yenv/(alternativas comunes) - Sube
requirements.txten lugar del directorio del venv - La plantilla
.gitignorede Python por defecto de GitHub ya las incluye
Solución de problemas comunes de Python en Mac
Solución: no se encuentra el comando `python`
Causa: Homebrew no añade python (sin versión) a tu PATH por defecto.
Solución:
echo 'export PATH="$(brew --prefix python)/libexec/bin:$PATH"' >> ~/.zprofile
source ~/.zprofile
python --versionMientras tanto, python3 siempre funciona después de brew install python.
Solución: `brew link` falla con Python versionado
Causa: las fórmulas versionadas de Python son keg-only. Ya hay otra versión de Python enlazada.
Solución: usa el comando versionado directamente en lugar de reenlazar:
# Usa simplemente el comando versionado. No hace falta enlazar.
python3.13 --version
python3.13 -m venv .venvSi debes reenlazar:
brew unlink python
brew link --force [email protected]Solución: error `externally-managed-environment`
Causa: estás ejecutando pip install fuera de un entorno virtual. PEP 668 lo bloquea con Python 3.12+ de Homebrew.
Solución: activa primero un venv:
python3 -m venv .venv
source .venv/bin/activate
pip install <package>Para herramientas CLI globales (black, ruff, mypy), usa pipx en su lugar:
brew install pipx
pipx ensurepath
pipx install blackSolución: venv roto tras `brew upgrade`
Causa: Homebrew actualizó Python, cambiando la ruta del binario que tu venv referencia.
Solución: recrea el venv:
rm -rf .venv
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtPrevención: fija tu versión de Python con brew pin [email protected].
Alternativas a considerar
Homebrew es el camino más sencillo, pero no el único. Estas son las principales alternativas.
uv: un gestor de paquetes de Python moderno
uv, de Astral, es una herramienta de Python todo en uno que reemplaza a pip, venv, pyenv y pipx. Está escrita en Rust y es significativamente más rápida que pip.
brew install uv
uv venv # crea venvs más rápido
uv pip install requests # reemplazo directo de pip
uv python install 3.13 # instala versiones específicas de PythonSi quieres una sola herramienta que se encargue de todo lo cubierto en este artículo, uv merece un vistazo. Guía completa: uv, un gestor de paquetes de Python moderno. Para despliegue: despliega un proyecto Python con uv y Dokploy.
pyenv: gestiona múltiples versiones de Python
pyenv es para cuando necesitas cambiar entre versiones de Python con frecuencia en distintos proyectos. La propia documentación de Homebrew lo recomienda “si necesitas estabilidad en las versiones menores o de parche para entornos virtuales”.
brew install pyenv
pyenv install 3.13.14
pyenv install 3.14.6
pyenv global 3.14.6pyenv gestiona las versiones independientemente de Homebrew, así que actualizar Homebrew no cambiará accidentalmente la versión de Python de tu proyecto. Supone más trabajo de configuración, pero más control.
Instaladores oficiales de Python.org
Python.org ofrece instaladores universal2 para macOS que funcionan tanto en Apple Silicon como en Intel. Son independientes, sin dependencia de Homebrew.
Usa esta opción si no quieres Homebrew en absoluto, o si necesitas una compilación específica de Python. La desventaja: configuración manual del PATH, sin actualizaciones automáticas, y no se integra con el ecosistema de Homebrew.
pipx: instala herramientas CLI de Python globalmente
pipx instala herramientas CLI de Python (como black, ruff, mypy, poetry) en entornos aislados, haciéndolas disponibles globalmente sin ensuciar el Python de tu sistema.
brew install pipx
pipx ensurepath
pipx install black
pipx install ruffpipx vs venv
pipx es para herramientas CLI que ejecutas desde cualquier lugar (formateadores, linters, herramientas de build). venv es para las dependencias del proyecto que tu código importa. Resuelven problemas diferentes y funcionan bien juntos.
Siguientes pasos: qué construir con Python en Mac
Ahora que tienes Python instalado y sabes cómo gestionar entornos, estos son los próximos pasos:
- Explora los mejores frameworks web de Python: encuentra el framework adecuado para tu próximo proyecto
- Crea una UI para tu app Python con NiceGUI: guía de inicio rápido para apps Python con interfaz
- Añade varias páginas a tu app NiceGUI: continuación para proyectos NiceGUI
- Ejecuta tu app Python en Docker: conteneriza tu proyecto para despliegues consistentes
- Despliega un proyecto Python con uv y Dokploy: despliegue en producción en un VPS
- Genera imágenes con IA localmente con Python: ejecuta modelos Flux en tu Mac
Si vas a desplegar en un servidor, Hetzner ofrece VPS europeos asequibles que funcionan bien para apps Python.
Los precios de los VPS subieron en general en 2026 — si estás reconsiderando un servidor alquilado, mira qué cambió y cuándo gana un mini PC.
Ver todos los tutoriales de Python

