# Cómo desinstalar Python y Node.js en un Mac

> Averigua qué Python o Node hay en tu PATH, quita las copias de Homebrew, pyenv, conda, nvm o los instaladores como se debe y limpia el PATH y las cachés.

Published: 2026-10-06 | Updated: 2026-10-17

Para desinstalar Python o Node.js en un Mac, averigua primero qué copia vas a quitar, porque suele haber varias y cada una se elimina de una forma distinta. Ejecuta `which -a python3` o `which -a node` para ver todas las copias que hay en tu PATH, y después quita cada una con la herramienta que la instaló: Homebrew con `brew uninstall`, pyenv con `pyenv uninstall`, nvm con `nvm uninstall`, conda con los pasos que documenta Anaconda, y los instaladores de python.org o nodejs.org borrando los archivos que escribieron sus paquetes. No toques `/usr/bin/python3`; pertenece a macOS y a las herramientas de desarrollo de Apple.

Después, limpia las líneas que esas herramientas añadieron a los archivos de arranque de tu shell y las cachés que dejaron en tu carpeta de inicio. Esta guía sigue ese orden: identificar, quitar, limpiar el PATH, borrar cachés y comprobar.

## Encuentra todos los Python y Node de tu PATH

Estos comandos solo leen:

```
which -a python3 python node npm
type -a python3 node
python3 -c 'import sys; print(sys.executable)'
```

`which -a` imprime todas las coincidencias en el orden del PATH, y la primera línea es lo que se ejecuta cuando escribes el comando. `type -a` muestra además los alias y las funciones de shell, lo que importa con los gestores de versiones: nvm, por ejemplo, define `nvm` como una función de shell, y pyenv y algunas configuraciones ponen shims delante de los binarios reales. Sigue un enlace simbólico con `ls -l` para ver adónde apunta de verdad.

Interpreta las rutas con esta tabla:

| La ruta empieza por | Quién lo instaló | Cómo se quita |
| --- | --- | --- |
| `/usr/bin/python3` | macOS, para Xcode y las Command Line Tools | No lo toques |
| `/Library/Frameworks/Python.framework` o enlaces de `/usr/local/bin` hacia él | Instalador de python.org | Quita sus tres partes (abajo) |
| `/opt/homebrew` (Apple silicon) o `/usr/local/Cellar`, `/usr/local/opt` (Intel) | Homebrew | `brew uninstall` |
| `~/.pyenv/shims` o `~/.pyenv/versions` | pyenv | `pyenv uninstall` |
| `~/anaconda3`, `~/miniconda3`, `/opt/anaconda3`, `/opt/miniconda3` | Anaconda o Miniconda | `conda init --reverse` y luego quita la carpeta |
| `/usr/local/bin/node` que no es un enlace de Homebrew | Instalador de nodejs.org | Quita sus archivos y olvida su recibo |
| `~/.nvm/versions/node` | nvm | `nvm uninstall` |
| `~/Library/Application Support/fnm` o `~/.fnm` | fnm | `fnm uninstall` y luego quita la carpeta |
| `~/.volta` | Volta | Quita `~/.volta` |

En un Mac Intel, tanto Homebrew como los instaladores de nodejs.org y python.org escriben en `/usr/local`, así que comprueba con `ls -l` si un archivo de ahí es un enlace al Cellar de Homebrew antes de dar por hecho que puedes borrarlo tú.

## No quites el Python de macOS

La [documentación de Python para macOS](https://docs.python.org/3/using/mac.html) es explícita: las versiones recientes de macOS incluyen un comando `python3` en `/usr/bin/python3` que enlaza a una versión de Python proporcionada por y para las herramientas de desarrollo de Apple, y nunca debes modificarlo ni intentar borrarlo, porque lo controla Apple y lo usa software de Apple y de terceros. De todos modos, está en el volumen del sistema sellado. Un segundo Python de python.org o Homebrew puede convivir con él; eliges cuál se ejecuta a través del PATH, no borrando el de Apple.

## Desinstala el Python de python.org

Según esa misma documentación, el instalador de python.org pone tres cosas en el Mac: una carpeta `Python 3.x` en Aplicaciones con IDLE y Python Launcher, el framework en `/Library/Frameworks/Python.framework` y enlaces simbólicos a los ejecutables en `/usr/local/bin`. La documentación dice que para desinstalar Python puedes quitar esas tres cosas.

Quita una versión cada vez. Por ejemplo, para la 3.12:

```
ls /Library/Frameworks/Python.framework/Versions
ls -l /usr/local/bin | grep 'Python.framework/Versions/3.12'
```

El primer comando lista las versiones instaladas; el segundo muestra qué enlaces de `/usr/local/bin` apuntan a la versión que vas a quitar. Después mueve `/Applications/Python 3.12` a la Papelera, borra `/Library/Frameworks/Python.framework/Versions/3.12` con permisos de administrador y borra solo los enlaces que imprimió el segundo comando. Si quitas la última versión, puede irse la carpeta `Python.framework` entera.

El instalador también deja un recibo, que puedes encontrar con `pkgutil --pkgs | grep -i python`. Un recibo no se ejecuta, pero `pkgutil --files <id>` muestra exactamente lo que escribió ese paquete, que es la lista de rutas más fiable. En [cómo desinstalar apps .pkg](https://mole.fit/es/blog/how-to-uninstall-pkg-apps-mac) explicamos cómo leer y olvidar recibos.

## Desinstala el Python de Homebrew

Homebrew nombra las fórmulas de Python por versión, como `python@3.13`. Comprueba antes qué hay instalado y qué depende de ello:

```
brew list --formula | grep '^python'
brew uses --installed python@3.13
```

Si `brew uses` imprime otras fórmulas, esas necesitan ese Python, y Homebrew se negará a desinstalarlo mientras sigan ahí. Quita antes las dependientes o conserva esa versión. Cuando no dependa nada de él, `brew uninstall python@3.13` lo quita, y `brew autoremove` borra las dependencias que ya no necesita nada más. Quitar Homebrew en sí es otra tarea, mucho más grande; consulta [cómo desinstalar Homebrew](https://mole.fit/es/blog/how-to-uninstall-homebrew-mac).

## Desinstala versiones de pyenv o el propio pyenv

El [README de pyenv](https://github.com/pyenv/pyenv) dice que las versiones antiguas se quitan con `pyenv uninstall <version>`, y que `pyenv prefix <version>` muestra el directorio de una versión. Los plug-ins pueden hacer trabajo extra al desinstalar; pyenv-virtualenv, por ejemplo, también quita los entornos virtuales asociados a esa versión.

```
pyenv versions
pyenv uninstall 3.11.9
```

Para quitar pyenv por completo, el README dice que quites todas las líneas de configuración de pyenv de los archivos de arranque de tu shell y que luego borres su directorio raíz con `rm -rf $(pyenv root)`, lo que elimina todos los Python instalados debajo. Si instalaste pyenv con Homebrew, termina con `brew uninstall pyenv`. Ejecuta antes `pyenv root` y lee la ruta que imprime antes de borrar nada.

## Desinstala Anaconda o Miniconda

La [guía de desinstalación de Anaconda](https://www.anaconda.com/docs/getting-started/anaconda/uninstall) y la [guía equivalente de Miniconda](https://www.anaconda.com/docs/getting-started/miniconda/uninstall) usan los mismos tres pasos en macOS:

1. Quita la inicialización de conda de los perfiles de tu shell: ejecuta `conda activate` y luego `conda init --reverse --all`.
2. Borra la carpeta de instalación. Anaconda señala que puede estar en tu carpeta de inicio o en `/opt`, según cómo instalaste; `conda info --base` imprime la ubicación real. Las rutas habituales son `~/anaconda3`, `~/miniconda3`, `/opt/anaconda3` u `/opt/miniconda3`, y las de `/opt` necesitan `sudo`.
3. Si quieres, quita los archivos ocultos de configuración y datos `~/.condarc`, `~/.conda` y `~/.continuum`. Anaconda sugiere conservar `.condarc` si tienes ajustes personalizados y piensas reinstalar.

La guía avisa de que `rm -rf` borra sin pedir confirmación y no se puede deshacer, así que revisa la ruta antes de pulsar Retorno. Los entornos que creaste viven dentro de la carpeta de instalación o en `~/.conda`, así que exporta antes los que necesites con `conda env export -n <name> > env.yml`.

## Desinstala el Node.js de nodejs.org

El paquete oficial para macOS son dos paquetes en uno. La definición del instalador de Node los registra como `org.nodejs.node.pkg` y `org.nodejs.npm.pkg`, y su pantalla final dice que instaló `node` en `/usr/local/bin/node` y `npm` en `/usr/local/bin/npm` ([código del instalador](https://github.com/nodejs/node/tree/main/tools/macos-installer)). El paquete de npm también enlaza `npx` en `/usr/local/bin` desde `/usr/local/lib/node_modules/npm`.

Lista lo que escribieron los paquetes antes de quitar nada:

```
pkgutil --pkgs | grep -i nodejs
pkgutil --pkg-info org.nodejs.node.pkg
pkgutil --files org.nodejs.node.pkg | head -50
```

`--pkg-info` muestra la ubicación de instalación, y la lista de archivos es relativa a ella. Quita lo que nombran las dos listas, que se centra en `/usr/local/bin/node`, `npm` y `npx` y la carpeta `/usr/local/lib/node_modules/npm`. Mira dentro de `/usr/local/lib/node_modules` antes de borrar la carpeta entera: ahí viven también los paquetes globales que instalaste con `npm install -g`. Después ejecuta `sudo pkgutil --forget org.nodejs.node.pkg` y lo mismo para `org.nodejs.npm.pkg`, lo que solo quita los recibos.

## Desinstala Node de Homebrew, nvm, fnm o Volta

**Homebrew:** `brew uninstall node`, o la fórmula con versión, como `node@20`. `brew uses --installed node` muestra lo que depende de él.

**nvm:** `nvm ls` lista las versiones instaladas y `nvm uninstall <version>` quita una, junto con los paquetes globales instalados para ella. Para quitar nvm en sí, el [README de nvm](https://github.com/nvm-sh/nvm) dice que ejecutes `nvm unload`, borres su directorio (`$NVM_DIR`, por omisión `~/.nvm`) y quites de la configuración de tu shell el export de `NVM_DIR` y las líneas que cargan `nvm.sh` y `bash_completion`. nvm no admite la instalación con Homebrew, así que un nvm que vino de Homebrew debe quitarse con `brew uninstall nvm`.

**fnm:** `fnm list` y `fnm uninstall <version>` gestionan las versiones. El [README de fnm](https://github.com/Schniz/fnm) dice que quitar fnm consiste en borrar su carpeta y quitar las referencias a fnm de la configuración de tu shell, como la línea `eval "$(fnm env ...)"`. Su carpeta de datos por omisión en macOS es `~/Library/Application Support/fnm`; las instalaciones antiguas usaban `~/.fnm`. Un fnm instalado con Homebrew necesita además `brew uninstall fnm`.

**Volta:** según la [documentación de Volta](https://docs.volta.sh/advanced/uninstall), quita el directorio `~/.volta` y las dos líneas que mencionan Volta en el perfil de tu shell.

## Limpia las líneas de PATH de los archivos de arranque de tu shell

Los instaladores y los gestores de versiones añaden líneas a estos archivos, y las líneas se quedan cuando el software ya no está:

```
grep -n -E 'python|Python.framework|pyenv|conda|nvm|fnm|volta|node' ~/.zshrc ~/.zprofile ~/.bash_profile ~/.bashrc ~/.profile 2>/dev/null
```

La salida muestra el archivo y el número de línea de cada coincidencia. Edita el archivo en un editor de texto y borra las líneas que pertenecen a lo que has quitado: las líneas `export PATH=...` que apuntan a `Python.framework`, las líneas de `pyenv init`, el bloque `>>> conda initialize >>>` si `conda init --reverse` no pudo ejecutarse, las líneas de nvm y fnm, y las dos líneas de Volta. Deja las líneas que no reconozcas hasta saber qué hacen. Abre después una ventana de terminal nueva; una que ya estaba abierta conserva su PATH antiguo, y `hash -r` borra en la ventana actual las ubicaciones de comandos que zsh recordaba.

## Cachés y datos que quedan

Desinstalar un intérprete no borra sus cachés de paquetes:

| Caché | Ubicación | Cómo borrarla |
| --- | --- | --- |
| pip | `~/Library/Caches/pip` por omisión en macOS; `pip cache dir` muestra la que está en uso | `pip cache purge`, ejecutado antes de quitar el último pip, o borra la carpeta |
| npm | `~/.npm`, con los paquetes en `~/.npm/_cacache` | `npm cache clean --force`, o borra la carpeta cuando Node ya no esté |
| Paquetes de conda | `pkgs` dentro de la carpeta de instalación, o `~/.conda/pkgs` | Se van con la carpeta de instalación; `~/.conda` es opcional |

La [documentación de caché de pip](https://pip.pypa.io/en/stable/topics/caching/) da la ubicación por omisión en macOS y `pip cache purge`. La [documentación de caché de npm](https://docs.npmjs.com/cli/v10/commands/npm-cache) señala que borrar la caché no suele hacer falta mientras sigues usando npm, porque se repara sola; cuando Node ya no está, la carpeta son solo datos.

Los entornos virtuales de los proyectos son otro caso. Un `.venv` creado con un Python que has quitado apunta a un intérprete que ya no existe y deja de funcionar. Bórralo y vuelve a crearlo con el Python que conservaste, a partir del `requirements.txt` o del lockfile del proyecto. Lo mismo vale para `node_modules` con módulos nativos compilados para una versión antigua de Node.

## Dónde encaja Mole

[Mole](https://mole.fit/) no desinstala intérpretes ni gestores de versiones; para eso, usa los comandos de arriba. Su pestaña **Limpiar** es útil después para las cachés. La carpeta por omisión de pip en macOS, `~/Library/Caches/pip`, aparece como fila propia en **Cachés y registros de apps**, y `~/.cache/pip` (la ubicación XDG que usan algunas configuraciones) como fila de caché de pip en **Herramientas de desarrollo**; las dos vienen seleccionadas por omisión, ya que pip vuelve a descargar lo que necesita. **Herramientas de desarrollo** también muestra las carpetas `_cacache` y `_npx` de npm como filas sin marcar porque la siguiente instalación las vuelve a descargar, un grupo **Datos de caché de npm que ya no se usan**, seleccionado por omisión, para archivos de caché a los que el propio índice de npm ya no hace referencia, los registros de npm, y `~/.conda/pkgs` de Conda como fila sin marcar. Las filas sin marcar siguen así hasta que las eliges tú, y no se elimina nada antes de que confirmes. En [por qué Mole borra menos caché de npm que npm cache verify](https://mole.fit/es/blog/mole-developer-cache-gc) explicamos la regla de npm, y en [cómo borrar las cachés de desarrollo](https://mole.fit/es/blog/how-to-clear-dev-caches-mac), otras herramientas.

## Comprueba

Abre una ventana de terminal nueva y ejecuta:

```
which -a python3 node
python3 --version
node --version
```

La copia que has quitado ya no debería aparecer. Si `/usr/bin/python3` es el único Python que queda, es la copia del sistema y es lo esperable. «command not found» para `node` es la respuesta correcta si querías quitar todos los Node. Si sigue ejecutándose una versión antigua, su línea de PATH sigue en alguno de tus archivos de shell u otro instalador puso una segunda copia en otro sitio; vuelve al primer paso.

## Preguntas frecuentes

### ¿Cómo desinstalo Python en un Mac?

Ejecuta `which -a python3` para ver qué copia tienes y quítala según cómo se instaló: `brew uninstall python@3.x` para Homebrew, `pyenv uninstall` para pyenv, o quita la carpeta de Aplicaciones, la versión del framework y los enlaces de `/usr/local/bin` para python.org. No borres `/usr/bin/python3`, que pertenece a macOS.

### ¿Cómo desinstalo Node.js en un Mac?

Usa `brew uninstall node` para Homebrew, `nvm uninstall <version>` para nvm, o, para el instalador de nodejs.org, quita `/usr/local/bin/node`, `npm`, `npx` y la carpeta de npm en `/usr/local/lib/node_modules`, y luego olvida los recibos `org.nodejs.node.pkg` y `org.nodejs.npm.pkg`.

### ¿Cómo desinstalo Anaconda por completo en un Mac?

Ejecuta `conda activate` y `conda init --reverse --all`, borra la carpeta de instalación que indica `conda info --base`, como `~/anaconda3` u `/opt/anaconda3`, y, si quieres, quita `~/.condarc`, `~/.conda` y `~/.continuum`.

### ¿Puedo borrar el Python que viene con macOS?

No. La documentación de Python dice que `/usr/bin/python3` lo controla Apple, lo usa software de Apple y de terceros, y nunca debe modificarse ni borrarse. Instala otro Python a su lado y elige cuál se ejecuta a través del PATH.

### ¿Por qué python3 sigue ejecutándose después de desinstalar Python?

O bien sigue otra copia en tu PATH, muchas veces `/usr/bin/python3` de macOS, o tu terminal aún tiene el PATH antiguo. Abre una ventana nueva, ejecuta `which -a python3` y quita las líneas de PATH que sobren en `~/.zshrc` o `~/.zprofile`.

---

Canonical HTML page: https://mole.fit/es/blog/how-to-uninstall-python-node-mac
Blog index for agents: https://mole.fit/es/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
