Cómo desinstalar Python y Node.js en un Mac
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 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 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.
Desinstala versiones de pyenv o el propio pyenv
El README de 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 y la guía equivalente de Miniconda usan los mismos tres pasos en macOS:
- Quita la inicialización de conda de los perfiles de tu shell: ejecuta
conda activatey luegoconda init --reverse --all. - 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 --baseimprime la ubicación real. Las rutas habituales son~/anaconda3,~/miniconda3,/opt/anaconda3u/opt/miniconda3, y las de/optnecesitansudo. - Si quieres, quita los archivos ocultos de configuración y datos
~/.condarc,~/.conday~/.continuum. Anaconda sugiere conservar.condarcsi 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). 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 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 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, 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 da la ubicación por omisión en macOS y pip cache purge. La documentación de caché de npm 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 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 explicamos la regla de npm, y en cómo borrar las cachés de desarrollo, 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.