Désinstaller Python et Node.js sur Mac
Pour désinstaller Python ou Node.js sur Mac, commencez par savoir quelle copie vous retirez, car il y en a généralement plusieurs et chacune se retire différemment. Exécutez which -a python3 ou which -a node pour voir toutes les copies présentes dans votre PATH, puis retirez chacune avec l’outil qui l’a installée : Homebrew avec brew uninstall, pyenv avec pyenv uninstall, nvm avec nvm uninstall, conda en suivant les étapes documentées par Anaconda, et les installeurs de python.org ou nodejs.org en supprimant les fichiers écrits par leurs paquets. Ne touchez pas à /usr/bin/python3 ; il appartient à macOS et aux outils de développement d’Apple.
Nettoyez ensuite les lignes que ces outils ont ajoutées à vos fichiers de démarrage du shell et les caches qu’ils ont laissés dans votre dossier de départ. Ce guide suit cet ordre : identifier, retirer, nettoyer le PATH, vider les caches, vérifier.
Trouver chaque Python et chaque Node de votre PATH
Ces commandes ne font que lire :
which -a python3 python node npm
type -a python3 node
python3 -c 'import sys; print(sys.executable)'
which -a affiche toutes les correspondances dans l’ordre du PATH, et la première ligne correspond à ce qui s’exécute quand vous tapez la commande. type -a montre aussi les alias et les fonctions du shell, ce qui compte pour les gestionnaires de versions : nvm, par exemple, définit nvm comme une fonction du shell, et pyenv ainsi que certaines configurations placent des shims devant les vrais binaires. Suivez un lien symbolique avec ls -l pour voir où il pointe réellement.
Lisez les chemins à l’aide de ce tableau :
| Le chemin commence par | Qui l’a installé | Comment le retirer |
|---|---|---|
/usr/bin/python3 |
macOS, pour Xcode et les Command Line Tools | N’y touchez pas |
/Library/Frameworks/Python.framework ou des liens de /usr/local/bin qui y mènent |
Installeur python.org | Retirez ses trois parties (voir plus bas) |
/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, puis supprimez le dossier |
/usr/local/bin/node qui n’est pas un lien Homebrew |
Installeur nodejs.org | Supprimez ses fichiers, oubliez son reçu |
~/.nvm/versions/node |
nvm | nvm uninstall |
~/Library/Application Support/fnm ou ~/.fnm |
fnm | fnm uninstall, puis supprimez le dossier |
~/.volta |
Volta | Supprimez ~/.volta |
Sur un Mac Intel, Homebrew comme les installeurs de nodejs.org et python.org écrivent dans /usr/local ; vérifiez donc avec ls -l si un fichier qui s’y trouve est un lien vers le Cellar de Homebrew avant de supposer que vous pouvez le supprimer.
Ne pas retirer le Python de macOS
La documentation Python pour macOS est explicite : les versions récentes de macOS incluent une commande python3 dans /usr/bin/python3 qui renvoie vers une version de Python fournie par et pour les outils de développement d’Apple, et vous ne devez jamais la modifier ni tenter de la supprimer, car elle est contrôlée par Apple et utilisée par des logiciels d’Apple et de tiers. Elle se trouve de toute façon sur le volume système scellé. Un second Python venant de python.org ou de Homebrew peut coexister avec elle ; vous choisissez celui qui s’exécute par le PATH, pas en supprimant celui d’Apple.
Désinstaller un Python installé depuis python.org
D’après la même documentation, l’installeur python.org place trois éléments sur le Mac : un dossier Python 3.x dans Applications avec IDLE et Python Launcher, le framework dans /Library/Frameworks/Python.framework et des liens symboliques vers les exécutables dans /usr/local/bin. La documentation indique que, pour désinstaller Python, vous pouvez supprimer ces trois éléments.
Retirez une version à la fois. Par exemple, pour la 3.12 :
ls /Library/Frameworks/Python.framework/Versions
ls -l /usr/local/bin | grep 'Python.framework/Versions/3.12'
La première commande liste les versions installées ; la seconde montre quels liens de /usr/local/bin pointent vers la version que vous retirez. Placez ensuite /Applications/Python 3.12 dans la Corbeille, supprimez /Library/Frameworks/Python.framework/Versions/3.12 avec les droits d’administrateur, et supprimez uniquement les liens affichés par la seconde commande. Si vous retirez la dernière version, tout le dossier Python.framework peut partir.
L’installeur laisse aussi un reçu, que vous pouvez trouver avec pkgutil --pkgs | grep -i python. Un reçu ne s’exécute pas, mais pkgutil --files <id> montre exactement ce que ce paquet a écrit, ce qui constitue la liste de chemins la plus fiable. Désinstaller une app installée avec un paquet .pkg explique comment lire et oublier les reçus.
Désinstaller un Python installé avec Homebrew
Homebrew nomme les formules Python par version, comme python@3.13. Vérifiez d’abord ce qui est installé et ce qui en dépend :
brew list --formula | grep '^python'
brew uses --installed python@3.13
Si brew uses affiche d’autres formules, elles ont besoin de ce Python, et Homebrew refusera de le désinstaller tant qu’elles seront présentes. Retirez d’abord les formules dépendantes ou gardez cette version. Quand plus rien n’en dépend, brew uninstall python@3.13 la retire, et brew autoremove supprime les dépendances dont plus rien n’a besoin. Retirer Homebrew lui-même est un travail distinct et bien plus lourd ; voir désinstaller Homebrew.
Désinstaller des versions de pyenv ou pyenv lui-même
Le README de pyenv indique de retirer les anciennes versions avec pyenv uninstall <version>, et que pyenv prefix <version> affiche le dossier d’une version. Les plug-ins peuvent faire un travail supplémentaire à la désinstallation ; pyenv-virtualenv, par exemple, retire aussi les environnements virtuels liés à cette version.
pyenv versions
pyenv uninstall 3.11.9
Pour retirer complètement pyenv, le README indique de supprimer toutes les lignes de configuration de pyenv de vos fichiers de démarrage du shell, puis de supprimer son dossier racine avec rm -rf $(pyenv root), ce qui efface tous les Python installés dessous. Si vous avez installé pyenv avec Homebrew, terminez par brew uninstall pyenv. Exécutez d’abord pyenv root et lisez le chemin affiché avant de supprimer quoi que ce soit.
Désinstaller Anaconda ou Miniconda
Le guide de désinstallation d’Anaconda et le guide Miniconda correspondant suivent les trois mêmes étapes sur macOS :
- Retirez l’initialisation de conda de vos profils de shell : exécutez
conda activate, puisconda init --reverse --all. - Supprimez le dossier d’installation. Anaconda précise qu’il peut se trouver dans votre dossier de départ ou dans
/opt, selon la façon dont vous l’avez installé ;conda info --baseaffiche l’emplacement réel. Les chemins habituels sont~/anaconda3,~/miniconda3,/opt/anaconda3ou/opt/miniconda3, et ceux de/optnécessitentsudo. - Si vous le souhaitez, supprimez les fichiers cachés de configuration et de données
~/.condarc,~/.condaet~/.continuum. Anaconda conseille de garder.condarcsi vous avez des réglages personnalisés et prévoyez de réinstaller.
Le guide prévient que rm -rf supprime sans confirmation et de façon irréversible ; vérifiez donc le chemin avant d’appuyer sur Retour. Les environnements que vous avez créés se trouvent dans le dossier d’installation ou sous ~/.conda ; exportez d’abord ceux dont vous avez besoin avec conda env export -n <name> > env.yml.
Désinstaller un Node.js installé depuis nodejs.org
Le paquet officiel pour macOS contient en fait deux paquets. La définition de l’installeur de Node les enregistre sous org.nodejs.node.pkg et org.nodejs.npm.pkg, et son écran final indique qu’il a installé node dans /usr/local/bin/node et npm dans /usr/local/bin/npm (source de l’installeur). Le paquet npm crée aussi un lien npx dans /usr/local/bin à partir de /usr/local/lib/node_modules/npm.
Listez ce que les paquets ont écrit avant de retirer quoi que ce soit :
pkgutil --pkgs | grep -i nodejs
pkgutil --pkg-info org.nodejs.node.pkg
pkgutil --files org.nodejs.node.pkg | head -50
--pkg-info affiche l’emplacement d’installation, et la liste des fichiers est relative à cet emplacement. Supprimez ce que les deux listes nomment, essentiellement /usr/local/bin/node, npm et npx ainsi que le dossier /usr/local/lib/node_modules/npm. Regardez dans /usr/local/lib/node_modules avant de supprimer tout le dossier : les paquets globaux installés avec npm install -g s’y trouvent aussi. Exécutez ensuite sudo pkgutil --forget org.nodejs.node.pkg, puis la même commande pour org.nodejs.npm.pkg, ce qui retire uniquement les reçus.
Désinstaller Node installé avec Homebrew, nvm, fnm ou Volta
Homebrew : brew uninstall node, ou la formule versionnée comme node@20. brew uses --installed node affiche tout ce qui en dépend.
nvm : nvm ls liste les versions installées et nvm uninstall <version> en retire une, avec les paquets globaux installés pour elle. Pour retirer nvm lui-même, le README de nvm indique d’exécuter nvm unload, de supprimer son dossier ($NVM_DIR, par défaut ~/.nvm) et de retirer de la configuration de votre shell l’export de NVM_DIR ainsi que les lignes qui chargent nvm.sh et bash_completion. nvm ne prend pas en charge l’installation par Homebrew ; un nvm venu de Homebrew se retire donc avec brew uninstall nvm.
fnm : fnm list et fnm uninstall <version> gèrent les versions. Le README de fnm indique que retirer fnm consiste à supprimer son dossier et à retirer les références à fnm de la configuration de votre shell, comme la ligne eval "$(fnm env ...)". Son dossier de données par défaut sur macOS est ~/Library/Application Support/fnm ; les anciennes installations utilisaient ~/.fnm. Un fnm installé avec Homebrew demande aussi brew uninstall fnm.
Volta : d’après la documentation de Volta, supprimez le dossier ~/.volta et les deux lignes qui mentionnent Volta dans votre profil de shell.
Nettoyer les lignes PATH de vos fichiers de démarrage du shell
Les installeurs et les gestionnaires de versions ajoutent des lignes à ces fichiers, et ces lignes restent une fois le logiciel parti :
grep -n -E 'python|Python.framework|pyenv|conda|nvm|fnm|volta|node' ~/.zshrc ~/.zprofile ~/.bash_profile ~/.bashrc ~/.profile 2>/dev/null
Le résultat indique le fichier et le numéro de ligne de chaque correspondance. Modifiez le fichier dans un éditeur de texte et supprimez les lignes qui appartiennent à ce que vous avez retiré : les lignes export PATH=... qui pointent vers Python.framework, les lignes pyenv init, le bloc >>> conda initialize >>> si conda init --reverse n’a pas pu s’exécuter, les lignes de nvm et de fnm, et les deux lignes de Volta. Laissez les lignes que vous ne reconnaissez pas tant que vous ne savez pas ce qu’elles font. Ouvrez ensuite une nouvelle fenêtre de terminal ; une fenêtre déjà ouverte garde son ancien PATH, et hash -r efface dans la fenêtre actuelle les emplacements de commandes mémorisés par zsh.
Les caches et données laissés derrière
Désinstaller un interpréteur ne vide pas ses caches de paquets :
| Cache | Emplacement | Comment le vider |
|---|---|---|
| pip | ~/Library/Caches/pip par défaut sur macOS ; pip cache dir affiche celui qui est actif |
pip cache purge, à lancer avant de retirer le dernier pip, ou supprimez le dossier |
| npm | ~/.npm, avec les paquets dans ~/.npm/_cacache |
npm cache clean --force, ou supprimez le dossier une fois Node retiré |
| Paquets conda | pkgs dans le dossier d’installation, ou ~/.conda/pkgs |
Retirés avec le dossier d’installation ; ~/.conda est facultatif |
La documentation de pip sur le cache donne l’emplacement par défaut sur macOS et pip cache purge. La documentation de npm sur le cache note que vider le cache est généralement inutile tant que vous utilisez encore npm, car il se répare de lui-même ; une fois Node retiré, le dossier n’est plus que des données.
Les environnements virtuels des projets sont un cas à part. Un .venv créé avec un Python que vous avez retiré pointe vers un interpréteur qui n’existe plus et cesse de fonctionner. Supprimez-le et recréez-le avec le Python que vous avez gardé, à partir du requirements.txt ou du fichier de verrouillage du projet. Il en va de même pour un node_modules contenant des modules natifs compilés pour une ancienne version de Node.
La place de Mole
Mole ne désinstalle ni les interpréteurs ni les gestionnaires de versions ; utilisez les commandes ci-dessus pour cela. Son onglet Nettoyer est utile ensuite pour les caches. Le dossier par défaut de pip sur macOS, ~/Library/Caches/pip, apparaît comme une ligne à part sous Caches et journaux des apps, et ~/.cache/pip (l’emplacement XDG utilisé par certaines configurations) comme une ligne de cache pip sous Outils de développement ; les deux sont sélectionnées par défaut, puisque pip retélécharge ce dont il a besoin. Outils de développement liste aussi les dossiers _cacache et _npx de npm comme des lignes laissées décochées, car la prochaine installation les retélécharge, un groupe Données du cache npm inutilisées sélectionné par défaut pour les fichiers de cache que l’index de npm ne référence plus, les journaux de npm, et ~/.conda/pkgs de Conda comme une ligne décochée. Les lignes décochées le restent jusqu’à ce que vous les choisissiez, et rien n’est supprimé avant votre confirmation. Pourquoi Mole conserve plus de cache que npm cache verify explique la règle pour npm, et vider les caches développeur couvre les autres chaînes d’outils.
Vérifier
Ouvrez une nouvelle fenêtre de terminal et exécutez :
which -a python3 node
python3 --version
node --version
La copie que vous avez retirée ne doit plus apparaître. Si /usr/bin/python3 est le seul Python restant, c’est la copie du système, et c’est normal. « command not found » pour node est la bonne réponse si vous vouliez retirer tous les Node. Si une ancienne version s’exécute encore, sa ligne PATH se trouve toujours dans l’un de vos fichiers de shell, ou un autre installeur a placé une seconde copie ailleurs ; revenez à la première étape.
FAQ
Comment désinstaller Python sur Mac ?
Exécutez which -a python3 pour savoir quelle copie vous avez, puis retirez-la comme elle a été installée : brew uninstall python@3.x pour Homebrew, pyenv uninstall pour pyenv, ou supprimez le dossier dans Applications, la version du framework et les liens de /usr/local/bin pour python.org. Ne supprimez pas /usr/bin/python3, qui appartient à macOS.
Comment désinstaller Node.js sur Mac ?
Utilisez brew uninstall node pour Homebrew, nvm uninstall <version> pour nvm ou, pour l’installeur nodejs.org, supprimez /usr/local/bin/node, npm, npx et le dossier npm sous /usr/local/lib/node_modules, puis oubliez les reçus org.nodejs.node.pkg et org.nodejs.npm.pkg.
Comment désinstaller complètement Anaconda sur Mac ?
Exécutez conda activate et conda init --reverse --all, supprimez le dossier d’installation indiqué par conda info --base, comme ~/anaconda3 ou /opt/anaconda3, et, si vous le souhaitez, supprimez ~/.condarc, ~/.conda et ~/.continuum.
Puis-je supprimer le Python fourni avec macOS ?
Non. La documentation Python indique que /usr/bin/python3 est contrôlé par Apple, utilisé par des logiciels d’Apple et de tiers, et ne doit jamais être modifié ni supprimé. Installez un autre Python à côté et choisissez celui qui s’exécute par le PATH.
Pourquoi python3 s’exécute-t-il encore après la désinstallation de Python ?
Soit une autre copie se trouve encore dans votre PATH, souvent /usr/bin/python3 de macOS, soit votre terminal a encore l’ancien PATH. Ouvrez une nouvelle fenêtre, exécutez which -a python3 et retirez les lignes PATH restantes de ~/.zshrc ou ~/.zprofile.