Como desinstalar Python e Node.js no Mac
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 é 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 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.
Desinstale versões do pyenv ou o próprio pyenv
O README do 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 da Anaconda e o guia correspondente do Miniconda 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á.
- Remova a inicialização do conda dos perfis do shell: execute
conda activatee depoisconda init --reverse --all. - 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 --baseimprime o local real. Caminhos típicos são~/anaconda3,~/miniconda3,/opt/anaconda3ou/opt/miniconda3, e os de/optprecisam desudo. - Opcionalmente remova os arquivos ocultos de configuração e dados
~/.condarc,~/.condae~/.continuum. A Anaconda sugere manter.condarcse 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). 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 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 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, 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 dá o padrão do macOS e o pip cache purge. A documentação de cache do npm 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 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 explica a regra do npm, e como limpar caches de desenvolvedor 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.