# Como desinstalar Python e Node.js no Mac

> Descubra qual Python ou Node está no PATH, remova cópias do Homebrew, pyenv, conda, nvm ou do instalador do jeito suportado e limpe as linhas de PATH e os caches.

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

Para desinstalar o Python ou o Node.js num Mac, primeiro descubra qual cópia você está removendo, porque em geral há várias e cada uma sai de um jeito diferente. Execute `which -a python3` ou `which -a node` para ver cada cópia no PATH e depois remova cada uma pela ferramenta que a instalou: Homebrew com `brew uninstall`, pyenv com `pyenv uninstall`, nvm com `nvm uninstall`, conda com os passos documentados da Anaconda, e os instaladores do python.org ou do nodejs.org removendo os arquivos que os pacotes gravaram. Deixe `/usr/bin/python3` em paz; ele pertence ao macOS e às ferramentas de desenvolvedor da Apple.

Depois, limpe as linhas que essas ferramentas acrescentaram aos arquivos de inicialização do shell e os caches que deixaram na sua pasta de início. Este guia segue essa ordem: identificar, remover, limpar o PATH, limpar caches, verificar.

## Encontre cada Python e Node no PATH

Estes comandos só leem:

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

`which -a` imprime cada correspondência na ordem do PATH, e a primeira linha é o que roda quando você digita o comando. `type -a` também mostra aliases e funções do shell, o que importa para gerenciadores de versão: o nvm, por exemplo, define `nvm` como uma função do shell, e o pyenv e alguns arranjos colocam shims na frente dos binários reais. Siga um link simbólico com `ls -l` para ver para onde ele aponta de verdade.

Leia os caminhos nesta tabela:

| O caminho começa com | Quem instalou | Como sai |
| --- | --- | --- |
| `/usr/bin/python3` | macOS, para o Xcode e as Command Line Tools | Deixe |
| `/Library/Frameworks/Python.framework` ou links de `/usr/local/bin` para dentro dele | Instalador do python.org | Remova as três partes (abaixo) |
| `/opt/homebrew` (Apple silicon) ou `/usr/local/Cellar`, `/usr/local/opt` (Intel) | Homebrew | `brew uninstall` |
| `~/.pyenv/shims` ou `~/.pyenv/versions` | pyenv | `pyenv uninstall` |
| `~/anaconda3`, `~/miniconda3`, `/opt/anaconda3`, `/opt/miniconda3` | Anaconda ou Miniconda | `conda init --reverse`, depois remova a pasta |
| `/usr/local/bin/node` que não é um link do Homebrew | Instalador do nodejs.org | Remova os arquivos e esqueça o recibo |
| `~/.nvm/versions/node` | nvm | `nvm uninstall` |
| `~/Library/Application Support/fnm` ou `~/.fnm` | fnm | `fnm uninstall`, depois remova a pasta |
| `~/.volta` | Volta | Remova `~/.volta` |

Num Mac Intel, tanto o Homebrew quanto os instaladores do nodejs.org e do python.org gravam em `/usr/local`, então confira com `ls -l` se um arquivo ali é um link para o Cellar do Homebrew antes de assumir que é seu para apagar.

## Não remova o Python do macOS

A [documentação do Python para macOS](https://docs.python.org/3/using/mac.html) é explícita: versões recentes do macOS incluem um comando `python3` em `/usr/bin/python3` que aponta para uma versão do Python fornecida pelas ferramentas de desenvolvimento da Apple e para elas, e você nunca deve modificá-lo nem tentar apagá-lo, porque ele é controlado pela Apple e usado por software da Apple e de terceiros. Ele fica no volume de sistema lacrado de qualquer forma. Um segundo Python do python.org ou do Homebrew pode coexistir com ele; você muda qual roda pelo PATH, não apagando o da Apple.

## Desinstale o Python instalado a partir do python.org

O instalador do python.org coloca três coisas no Mac, segundo a mesma documentação: uma pasta `Python 3.x` em Aplicativos com o IDLE e o Python Launcher, o framework em `/Library/Frameworks/Python.framework` e links simbólicos para os executáveis em `/usr/local/bin`. A documentação diz que, para desinstalar o Python, você pode remover essas três coisas.

Remova uma versão de cada vez. Por exemplo, para a 3.12:

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

O primeiro comando lista as versões instaladas; o segundo mostra quais links em `/usr/local/bin` apontam para a versão que você está removendo. Depois mova `/Applications/Python 3.12` para o Lixo, apague `/Library/Frameworks/Python.framework/Versions/3.12` com direitos de administrador e apague só os links que o segundo comando imprimiu. Se você remover a última versão, a pasta `Python.framework` inteira pode sair.

O instalador também deixa um recibo, que você encontra com `pkgutil --pkgs | grep -i python`. Um recibo não roda, mas `pkgutil --files <id>` mostra exatamente o que aquele pacote gravou, que é a lista mais confiável de caminhos. [Como desinstalar apps .pkg](https://mole.fit/pt-br/blog/how-to-uninstall-pkg-apps-mac) explica como ler e esquecer recibos.

## Desinstale o Python instalado com o Homebrew

O Homebrew nomeia as fórmulas do Python pela versão, como `python@3.13`. Confira o que está instalado e o que depende disso primeiro:

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

Se `brew uses` imprime outras fórmulas, elas precisam desse Python, e o Homebrew vai recusar desinstalá-lo enquanto elas permanecerem. Remova as dependentes primeiro ou mantenha essa versão. Quando nada depende dela, `brew uninstall python@3.13` a remove, e `brew autoremove` limpa dependências de que mais nada precisa. Remover o próprio Homebrew é um trabalho separado e bem maior; veja [como desinstalar o Homebrew](https://mole.fit/pt-br/blog/how-to-uninstall-homebrew-mac).

## Desinstale versões do pyenv ou o próprio pyenv

O [README do pyenv](https://github.com/pyenv/pyenv) diz para remover versões antigas com `pyenv uninstall <version>`, e que `pyenv prefix <version>` mostra o diretório de uma versão. Plug-ins podem fazer trabalho extra na desinstalação; o pyenv-virtualenv, por exemplo, também remove ambientes virtuais ligados a essa versão.

```
pyenv versions
pyenv uninstall 3.11.9
```

Para remover o pyenv por completo, o README diz para remover todas as linhas de configuração do pyenv dos arquivos de inicialização do shell e depois remover o diretório raiz com `rm -rf $(pyenv root)`, o que apaga cada Python instalado debaixo dele. Se você instalou o pyenv com o Homebrew, termine com `brew uninstall pyenv`. Execute `pyenv root` primeiro e leia o caminho que ele imprime antes de apagar qualquer coisa.

## Desinstale o Anaconda ou o Miniconda

O [guia de desinstalação](https://www.anaconda.com/docs/getting-started/anaconda/uninstall) da Anaconda e o [guia correspondente do Miniconda](https://www.anaconda.com/docs/getting-started/miniconda/uninstall) usam os mesmos três passos no macOS. Se a instalação inclui o `uninstall.sh` da Anaconda, o guia agora aponta para esse script primeiro; os três passos manuais abaixo são a alternativa quando ele não está lá.

1. Remova a inicialização do conda dos perfis do shell: execute `conda activate` e depois `conda init --reverse --all`.
2. Apague a pasta de instalação. A Anaconda observa que ela pode ficar na sua pasta de início ou em `/opt`, conforme a forma de instalação; `conda info --base` imprime o local real. Caminhos típicos são `~/anaconda3`, `~/miniconda3`, `/opt/anaconda3` ou `/opt/miniconda3`, e os de `/opt` precisam de `sudo`.
3. Opcionalmente remova os arquivos ocultos de configuração e dados `~/.condarc`, `~/.conda` e `~/.continuum`. A Anaconda sugere manter `.condarc` se você tem ajustes personalizados e planeja reinstalar.

O guia avisa que `rm -rf` apaga sem confirmação e não pode ser desfeito, então confira o caminho antes de pressionar Return. Ambientes que você criou ficam dentro da pasta de instalação ou em `~/.conda`, então exporte os de que precisa primeiro com `conda env export -n <name> > env.yml`.

## Desinstale o Node.js instalado a partir do nodejs.org

O pacote oficial do macOS são dois pacotes num só. A definição do instalador do Node registra-os como `org.nodejs.node.pkg` e `org.nodejs.npm.pkg`, e a tela final diz que instalou `node` em `/usr/local/bin/node` e `npm` em `/usr/local/bin/npm` ([fonte do instalador](https://github.com/nodejs/node/tree/main/tools/macos-installer)). O pacote do npm também liga `npx` em `/usr/local/bin` a partir de `/usr/local/lib/node_modules/npm`.

Liste o que os pacotes gravaram antes de remover qualquer coisa:

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

`--pkg-info` mostra o local de instalação, e a lista de arquivos é relativa a ele. Remova o que as duas listas nomeiam, o que se concentra em `/usr/local/bin/node`, `npm` e `npx` e na pasta `/usr/local/lib/node_modules/npm`. Olhe dentro de `/usr/local/lib/node_modules` antes de apagar a pasta inteira: pacotes globais que você instalou com `npm install -g` também ficam lá. Depois execute `sudo pkgutil --forget org.nodejs.node.pkg` e o mesmo para `org.nodejs.npm.pkg`, o que remove só os recibos.

## Desinstale o Node do Homebrew, nvm, fnm ou Volta

**Homebrew:** `brew uninstall node`, ou a fórmula versionada, como `node@20`. `brew uses --installed node` mostra qualquer coisa que dependa dele.

**nvm:** `nvm ls` lista as versões instaladas e `nvm uninstall <version>` remove uma, junto com os pacotes globais instalados para ela. Para remover o próprio nvm, o [README do nvm](https://github.com/nvm-sh/nvm) diz para executar `nvm unload`, apagar o diretório dele (`$NVM_DIR`, por padrão `~/.nvm`) e remover a exportação de `NVM_DIR` e as linhas que fazem source de `nvm.sh` e `bash_completion` da configuração do shell. O nvm não suporta instalação pelo Homebrew, então um nvm que veio do Homebrew deve ser removido com `brew uninstall nvm`.

**fnm:** `fnm list` e `fnm uninstall <version>` gerenciam versões. O [README do fnm](https://github.com/Schniz/fnm) diz que remover o fnm significa apagar a pasta dele e remover referências ao fnm da configuração do shell, como a linha `eval "$(fnm env ...)"`. A pasta de dados padrão no macOS é `~/Library/Application Support/fnm`; instalações mais antigas usavam `~/.fnm`. Um fnm instalado pelo Homebrew também precisa de `brew uninstall fnm`.

**Volta:** segundo a [documentação do Volta](https://docs.volta.sh/advanced/uninstall), remova o diretório `~/.volta` e as duas linhas que mencionam o Volta no perfil do shell.

## Limpe linhas de PATH dos arquivos de inicialização do shell

Instaladores e gerenciadores de versão acrescentam linhas a estes arquivos, e as linhas ficam depois que o software some:

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

A saída lista o arquivo e o número da linha de cada correspondência. Edite o arquivo num editor de texto e apague as linhas que pertencem ao que você removeu: linhas `export PATH=...` que apontam para `Python.framework`, as linhas de `pyenv init`, o bloco `>>> conda initialize >>>` se `conda init --reverse` não pôde rodar, as linhas do nvm e do fnm, e as duas linhas do Volta. Deixe linhas que você não reconhece até saber o que elas fazem. Abra uma janela nova do terminal depois; uma aberta mantém o PATH antigo, e `hash -r` limpa os locais de comando que o zsh lembrou na atual.

## Caches e dados deixados para trás

Desinstalar um interpretador não limpa os caches de pacotes dele:

| Cache | Local | Como limpar |
| --- | --- | --- |
| pip | `~/Library/Caches/pip` por padrão no macOS; `pip cache dir` mostra o ativo | `pip cache purge`, executado antes de remover o último pip, ou apague a pasta |
| npm | `~/.npm`, com pacotes em `~/.npm/_cacache` | `npm cache clean --force`, ou apague a pasta depois que o Node sumir |
| pacotes do conda | `pkgs` dentro da pasta de instalação, ou `~/.conda/pkgs` | Removidos com a pasta de instalação; `~/.conda` é opcional |

A [documentação de cache do pip](https://pip.pypa.io/en/stable/topics/caching/) dá o padrão do macOS e o `pip cache purge`. A [documentação de cache do npm](https://docs.npmjs.com/cli/v10/commands/npm-cache) observa que limpar o cache em geral é desnecessário enquanto você ainda usa o npm, porque ele se recupera sozinho; quando o Node some, a pasta é só dados.

Ambientes virtuais de projeto são um caso à parte. Um `.venv` criado com um Python que você removeu aponta para um interpretador que não existe mais e para de funcionar. Apague e recrie com o Python que você manteve, a partir do `requirements.txt` ou do lockfile do projeto. O mesmo vale para `node_modules` com módulos nativos compilados para uma versão antiga do Node.

## Onde o Mole entra

O [Mole](https://mole.fit/) não desinstala interpretadores nem gerenciadores de versão; use os comandos acima para isso. A aba **Limpar** serve depois, para os caches. A pasta padrão do pip no macOS, `~/Library/Caches/pip`, aparece como linha própria em **Caches e logs de apps**, e `~/.cache/pip` (o local XDG que alguns arranjos usam) como uma linha de cache do pip em **Ferramentas de desenvolvimento**; as duas vêm selecionadas por padrão, já que o pip baixa de novo o que precisa. **Ferramentas de desenvolvimento** também lista as pastas `_cacache` e `_npx` do npm como linhas deixadas desmarcadas porque a próxima instalação as baixa de novo, um grupo **Dados do cache do npm que não são mais usados**, selecionado por padrão, para arquivos de cache que o próprio índice do npm não referencia mais, logs do npm, e `~/.conda/pkgs` do Conda como uma linha desmarcada. As linhas desmarcadas ficam assim até você escolhê-las, e nada é removido antes da confirmação. [Por que o Mole limpa menos cache do npm do que o npm cache verify](https://mole.fit/pt-br/blog/mole-developer-cache-gc) explica a regra do npm, e [como limpar caches de desenvolvedor](https://mole.fit/pt-br/blog/how-to-clear-dev-caches-mac) cobre outras cadeias de ferramentas.

## Verifique

Abra uma janela nova do terminal e execute:

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

A cópia que você removeu não deve mais aparecer. Se `/usr/bin/python3` for o único Python que resta, essa é a cópia do sistema e é o esperado. "command not found" para `node` é a resposta certa quando você quis remover cada Node. Se uma versão antiga ainda roda, a linha de PATH dela ainda está num dos arquivos do shell ou outro instalador colocou uma segunda cópia em outro lugar; volte ao primeiro passo.

## Perguntas frequentes

### Como desinstalo o Python num Mac?

Execute `which -a python3` para ver qual cópia você tem e remova do jeito que foi instalada: `brew uninstall python@3.13` (use a versão que você instalou) para o Homebrew, `pyenv uninstall` para o pyenv, ou remova a pasta de Aplicativos, a versão do framework e os links de `/usr/local/bin` para o python.org. Não apague `/usr/bin/python3`, que pertence ao macOS.

### Como desinstalo o Node.js num Mac?

Use `brew uninstall node` para o Homebrew, `nvm uninstall <version>` para o nvm, ou, para o instalador do nodejs.org, remova `/usr/local/bin/node`, `npm`, `npx` e a pasta do npm em `/usr/local/lib/node_modules`, e depois esqueça os recibos `org.nodejs.node.pkg` e `org.nodejs.npm.pkg`.

### Como desinstalo o Anaconda por completo num Mac?

Execute `conda activate` e `conda init --reverse --all`, apague a pasta de instalação que `conda info --base` informa, como `~/anaconda3` ou `/opt/anaconda3`, e opcionalmente remova `~/.condarc`, `~/.conda` e `~/.continuum`.

### Posso apagar o Python que vem com o macOS?

Não. A documentação do Python diz que `/usr/bin/python3` é controlado pela Apple, usado por software da Apple e de terceiros, e nunca deve ser modificado nem apagado. Instale outro Python ao lado e escolha qual roda pelo PATH.

### Por que o python3 ainda roda depois que eu desinstalei o Python?

Ou outra cópia ainda está no PATH, muitas vezes `/usr/bin/python3` do macOS, ou o terminal ainda tem o PATH antigo. Abra uma janela nova, execute `which -a python3` e remova linhas de PATH restantes de `~/.zshrc` ou `~/.zprofile`.

---

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