# Mac에서 Python과 Node.js 제거하는 방법

> PATH에 있는 Python과 Node를 찾고, Homebrew, pyenv, conda, nvm, 설치 프로그램으로 깐 사본을 각각 지원되는 방식으로 제거한 다음 PATH 줄과 캐시를 정리합니다.

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

Mac에서 Python이나 Node.js를 제거하려면 먼저 어느 사본을 지우는지부터 알아내야 합니다. 대개 여러 개가 깔려 있고 각각 지우는 방법이 다르기 때문입니다. `which -a python3`이나 `which -a node`를 실행해 PATH에 있는 모든 사본을 확인한 다음, 각 사본을 설치한 도구로 제거합니다. Homebrew는 `brew uninstall`, pyenv는 `pyenv uninstall`, nvm은 `nvm uninstall`, conda는 Anaconda가 문서화한 단계로, python.org나 nodejs.org 설치 프로그램으로 깐 것은 패키지가 기록한 파일을 지우는 방식입니다. `/usr/bin/python3`은 건드리지 마세요. macOS와 Apple 개발자 도구의 것입니다.

그다음에는 이 도구들이 셸 시작 파일에 추가한 줄과 홈 폴더에 남긴 캐시를 정리합니다. 이 글은 확인, 제거, PATH 정리, 캐시 비우기, 검증 순서로 진행합니다.

## PATH에 있는 모든 Python과 Node 찾기

다음 명령은 읽기만 합니다.

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

`which -a`는 PATH 순서대로 일치하는 항목을 모두 출력하며, 첫 줄이 명령을 입력했을 때 실제로 실행되는 것입니다. `type -a`는 별칭과 셸 함수까지 보여 주는데, 버전 관리자에서는 이것이 중요합니다. 예를 들어 nvm은 `nvm`을 셸 함수로 정의하고, pyenv와 일부 구성은 실제 바이너리 앞에 shim을 둡니다. 심볼릭 링크가 실제로 어디를 가리키는지는 `ls -l`로 따라가 보세요.

나온 경로를 다음 표와 맞춰 봅니다.

| 경로 시작 부분 | 설치한 주체 | 제거 방법 |
| --- | --- | --- |
| `/usr/bin/python3` | Xcode와 Command Line Tools를 위한 macOS | 그대로 둠 |
| `/Library/Frameworks/Python.framework` 또는 그곳을 가리키는 `/usr/local/bin` 링크 | python.org 설치 프로그램 | 세 부분을 제거(아래 참고) |
| `/opt/homebrew`(Apple 실리콘) 또는 `/usr/local/Cellar`, `/usr/local/opt`(Intel) | Homebrew | `brew uninstall` |
| `~/.pyenv/shims` 또는 `~/.pyenv/versions` | pyenv | `pyenv uninstall` |
| `~/anaconda3`, `~/miniconda3`, `/opt/anaconda3`, `/opt/miniconda3` | Anaconda 또는 Miniconda | `conda init --reverse` 후 폴더 제거 |
| Homebrew 링크가 아닌 `/usr/local/bin/node` | nodejs.org 설치 프로그램 | 파일을 제거하고 영수증 삭제 |
| `~/.nvm/versions/node` | nvm | `nvm uninstall` |
| `~/Library/Application Support/fnm` 또는 `~/.fnm` | fnm | `fnm uninstall` 후 폴더 제거 |
| `~/.volta` | Volta | `~/.volta` 제거 |

Intel Mac에서는 Homebrew와 nodejs.org, python.org 설치 프로그램이 모두 `/usr/local`에 파일을 쓰므로, 그곳의 파일이 내가 지워도 되는 것이라고 판단하기 전에 `ls -l`로 Homebrew Cellar를 가리키는 링크인지 확인하세요.

## macOS의 Python은 지우지 마세요

[macOS용 Python 문서](https://docs.python.org/3/using/mac.html)는 분명하게 말합니다. 최근 macOS에는 `/usr/bin/python3`에 `python3` 명령이 들어 있는데, 이는 Apple 개발 도구가 제공하고 그 도구를 위해 쓰이는 Python 버전에 연결되어 있습니다. Apple이 관리하며 Apple과 타사 소프트웨어가 사용하므로 절대 수정하거나 삭제하려 하지 말라고 합니다. 게다가 이 파일은 봉인된 시스템 볼륨에 있습니다. python.org나 Homebrew에서 설치한 두 번째 Python은 이것과 함께 쓸 수 있으며, 어느 쪽을 실행할지는 Apple의 Python을 지워서가 아니라 PATH로 정합니다.

## python.org에서 설치한 Python 제거하기

같은 문서에 따르면 python.org 설치 프로그램은 Mac에 세 가지를 둡니다. 응용 프로그램 폴더의 IDLE과 Python Launcher가 든 `Python 3.x` 폴더, `/Library/Frameworks/Python.framework`의 프레임워크, `/usr/local/bin`에 있는 실행 파일 심볼릭 링크입니다. 문서는 Python을 제거하려면 이 세 가지를 지우면 된다고 설명합니다.

버전은 하나씩 제거합니다. 예를 들어 3.12라면 다음과 같습니다.

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

첫 번째 명령은 설치된 버전을 나열하고, 두 번째 명령은 `/usr/local/bin`의 링크 중 제거하려는 버전을 가리키는 것을 보여 줍니다. 그런 다음 `/Applications/Python 3.12`를 휴지통으로 옮기고, 관리자 권한으로 `/Library/Frameworks/Python.framework/Versions/3.12`를 삭제하고, 두 번째 명령이 출력한 링크만 삭제합니다. 마지막 버전까지 제거했다면 `Python.framework` 폴더 전체를 지워도 됩니다.

설치 프로그램은 영수증도 남기는데, `pkgutil --pkgs | grep -i python`으로 찾을 수 있습니다. 영수증은 실행되지 않지만 `pkgutil --files <id>`로 그 패키지가 정확히 무엇을 기록했는지 볼 수 있고, 이것이 가장 믿을 만한 경로 목록입니다. 영수증을 읽고 삭제하는 방법은 [.pkg 앱 제거하는 방법](https://mole.fit/ko/blog/how-to-uninstall-pkg-apps-mac)에서 설명합니다.

## Homebrew로 설치한 Python 제거하기

Homebrew는 Python formula에 `python@3.13`처럼 버전을 붙여 이름을 짓습니다. 먼저 무엇이 설치되어 있고 무엇이 그것에 의존하는지 확인합니다.

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

`brew uses`가 다른 formula를 출력한다면 그 formula들이 해당 Python을 필요로 하는 것이고, 그것들이 남아 있는 동안 Homebrew는 제거를 거부합니다. 의존하는 formula를 먼저 제거하거나 그 버전은 남겨 두세요. 의존하는 것이 없다면 `brew uninstall python@3.13`으로 제거하고, `brew autoremove`로 더 이상 아무도 쓰지 않는 의존성을 정리합니다. Homebrew 자체를 제거하는 것은 별개의 훨씬 큰 작업이며, [Homebrew 제거하는 방법](https://mole.fit/ko/blog/how-to-uninstall-homebrew-mac)을 참고하세요.

## pyenv 버전이나 pyenv 자체 제거하기

[pyenv README](https://github.com/pyenv/pyenv)에 따르면 오래된 버전은 `pyenv uninstall <version>`으로 제거하고, `pyenv prefix <version>`으로 해당 버전의 디렉터리를 볼 수 있습니다. 플러그인은 제거할 때 추가 작업을 할 수 있습니다. 예를 들어 pyenv-virtualenv는 그 버전에 연결된 가상 환경도 함께 제거합니다.

```
pyenv versions
pyenv uninstall 3.11.9
```

pyenv를 완전히 제거하려면, README는 셸 시작 파일에서 pyenv 설정 줄을 모두 지운 다음 `rm -rf $(pyenv root)`로 루트 디렉터리를 제거하라고 안내합니다. 이렇게 하면 그 아래에 설치된 모든 Python이 지워집니다. Homebrew로 pyenv를 설치했다면 마지막에 `brew uninstall pyenv`를 실행합니다. 무엇이든 지우기 전에 먼저 `pyenv root`를 실행해 출력되는 경로를 읽어 보세요.

## Anaconda나 Miniconda 제거하기

Anaconda의 [제거 안내](https://www.anaconda.com/docs/getting-started/anaconda/uninstall)와 짝을 이루는 [Miniconda 안내](https://www.anaconda.com/docs/getting-started/miniconda/uninstall)는 macOS에서 같은 세 단계를 씁니다.

1. 셸 프로파일에서 conda 초기화 설정을 제거합니다. `conda activate`를 실행한 다음 `conda init --reverse --all`을 실행합니다.
2. 설치 폴더를 삭제합니다. Anaconda에 따르면 설치 방법에 따라 홈 폴더나 `/opt`에 있을 수 있으며, `conda info --base`가 실제 위치를 출력합니다. 흔한 경로는 `~/anaconda3`, `~/miniconda3`, `/opt/anaconda3`, `/opt/miniconda3`이고, `/opt` 아래의 것은 `sudo`가 필요합니다.
3. 원하면 숨겨진 설정 및 데이터 파일인 `~/.condarc`, `~/.conda`, `~/.continuum`을 제거합니다. 사용자 지정 설정이 있고 다시 설치할 계획이라면 `.condarc`는 남겨 두라고 Anaconda는 권합니다.

안내문은 `rm -rf`가 확인 없이 삭제하며 되돌릴 수 없다고 경고하니, Return 키를 누르기 전에 경로를 확인하세요. 직접 만든 환경은 설치 폴더 안이나 `~/.conda` 아래에 있으므로, 필요한 환경은 먼저 `conda env export -n <name> > env.yml`로 내보내 두세요.

## nodejs.org에서 설치한 Node.js 제거하기

공식 macOS 패키지는 두 패키지를 하나로 묶은 것입니다. Node 자체의 설치 프로그램 정의는 이를 `org.nodejs.node.pkg`와 `org.nodejs.npm.pkg`로 등록하며, 마지막 화면에서 `node`를 `/usr/local/bin/node`에, `npm`을 `/usr/local/bin/npm`에 설치했다고 알립니다([설치 프로그램 소스](https://github.com/nodejs/node/tree/main/tools/macos-installer)). npm 패키지는 `/usr/local/lib/node_modules/npm`에서 `/usr/local/bin`으로 `npx` 링크도 만듭니다.

무엇이든 지우기 전에 패키지가 기록한 내용을 나열합니다.

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

`--pkg-info`는 설치 위치를 보여 주며, 파일 목록은 그 위치를 기준으로 한 상대 경로입니다. 두 목록에 나온 것을 제거하는데, 중심은 `/usr/local/bin/node`, `npm`, `npx`, 그리고 `/usr/local/lib/node_modules/npm` 폴더입니다. 폴더 전체를 지우기 전에 `/usr/local/lib/node_modules` 안을 살펴보세요. `npm install -g`로 설치한 전역 패키지도 그곳에 있습니다. 그런 다음 `sudo pkgutil --forget org.nodejs.node.pkg`를 실행하고 `org.nodejs.npm.pkg`에도 똑같이 실행합니다. 이 명령은 영수증만 지웁니다.

## Homebrew, nvm, fnm, Volta로 설치한 Node 제거하기

**Homebrew:** `brew uninstall node`, 또는 `node@20` 같은 버전별 formula를 지정합니다. `brew uses --installed node`로 이것에 의존하는 항목을 볼 수 있습니다.

**nvm:** `nvm ls`는 설치된 버전을 나열하고, `nvm uninstall <version>`은 그 버전과 그 버전용으로 설치한 전역 패키지를 함께 제거합니다. nvm 자체를 제거하려면 [nvm README](https://github.com/nvm-sh/nvm)에 따라 `nvm unload`를 실행하고, 디렉터리(`$NVM_DIR`, 기본값은 `~/.nvm`)를 삭제한 다음, 셸 설정에서 `NVM_DIR` export와 `nvm.sh`, `bash_completion`을 불러오는 줄을 지웁니다. nvm은 Homebrew 설치를 지원하지 않으므로, Homebrew에서 온 nvm은 `brew uninstall nvm`으로 제거해야 합니다.

**fnm:** `fnm list`와 `fnm uninstall <version>`으로 버전을 관리합니다. [fnm README](https://github.com/Schniz/fnm)에 따르면 fnm을 제거하려면 폴더를 삭제하고, `eval "$(fnm env ...)"` 줄처럼 셸 설정에 있는 fnm 참조를 지워야 합니다. macOS에서 기본 데이터 폴더는 `~/Library/Application Support/fnm`이고, 예전 설치는 `~/.fnm`을 썼습니다. Homebrew로 설치한 fnm이라면 `brew uninstall fnm`도 필요합니다.

**Volta:** [Volta 문서](https://docs.volta.sh/advanced/uninstall)에 따라 `~/.volta` 디렉터리와 셸 프로파일에서 Volta가 나오는 두 줄을 제거합니다.

## 셸 시작 파일에서 PATH 줄 정리하기

설치 프로그램과 버전 관리자는 다음 파일에 줄을 추가하며, 소프트웨어를 지운 뒤에도 그 줄은 남습니다.

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

출력에는 일치하는 항목마다 파일과 줄 번호가 나옵니다. 텍스트 편집기로 파일을 열고 제거한 것에 속하는 줄을 지웁니다. `Python.framework`를 가리키는 `export PATH=...` 줄, `pyenv init` 줄, `conda init --reverse`를 실행하지 못했다면 `>>> conda initialize >>>` 블록, nvm과 fnm 줄, Volta의 두 줄입니다. 무슨 역할인지 모르는 줄은 알게 될 때까지 남겨 두세요. 그런 다음 새 터미널 윈도우를 엽니다. 열려 있던 윈도우는 예전 PATH를 그대로 갖고 있으며, 현재 윈도우에서는 `hash -r`로 zsh가 기억해 둔 명령 위치를 지울 수 있습니다.

## 남아 있는 캐시와 데이터

인터프리터를 제거해도 패키지 캐시는 지워지지 않습니다.

| 캐시 | 위치 | 비우는 방법 |
| --- | --- | --- |
| pip | macOS 기본값은 `~/Library/Caches/pip`. 실제 사용 중인 위치는 `pip cache dir`로 확인 | 마지막 pip를 제거하기 전에 `pip cache purge`를 실행하거나 폴더를 삭제 |
| npm | `~/.npm`, 패키지는 `~/.npm/_cacache`에 있음 | `npm cache clean --force`, 또는 Node를 제거한 뒤 폴더 삭제 |
| conda 패키지 | 설치 폴더 안의 `pkgs` 또는 `~/.conda/pkgs` | 설치 폴더와 함께 제거됨. `~/.conda`는 선택 사항 |

[pip 캐시 문서](https://pip.pypa.io/en/stable/topics/caching/)에는 macOS 기본 위치와 `pip cache purge`가 나와 있습니다. [npm 캐시 문서](https://docs.npmjs.com/cli/v10/commands/npm-cache)는 캐시가 스스로 복구되므로 npm을 계속 쓰는 동안에는 대개 비울 필요가 없다고 설명합니다. Node를 제거했다면 그 폴더는 그냥 데이터일 뿐입니다.

프로젝트의 가상 환경은 별개의 문제입니다. 제거한 Python으로 만든 `.venv`는 더 이상 존재하지 않는 인터프리터를 가리키므로 작동하지 않습니다. 삭제한 다음, 남겨 둔 Python으로 프로젝트의 `requirements.txt`나 lockfile을 이용해 다시 만드세요. 이전 Node 버전용으로 빌드된 네이티브 모듈이 든 `node_modules`도 마찬가지입니다.

## Mole의 역할

[Mole](https://mole.fit/ko/)은 인터프리터나 버전 관리자를 제거하지 않으니, 그 작업에는 위의 명령을 쓰세요. Mole의 **정리** 탭은 그 뒤에 캐시를 정리할 때 유용합니다. pip의 macOS 기본 폴더인 `~/Library/Caches/pip`는 **앱 캐시 및 로그** 아래에 별도 행으로, 일부 구성에서 쓰는 XDG 위치인 `~/.cache/pip`는 **개발자 도구** 아래에 pip 캐시 행으로 나옵니다. pip는 필요한 것을 다시 내려받으므로 둘 다 기본으로 선택되어 있습니다. **개발자 도구**에는 npm의 `_cacache`와 `_npx` 폴더도 나오는데, 다음에 설치할 때 다시 내려받아야 하므로 선택되지 않은 행으로 둡니다. 그 밖에 npm 자체 색인이 더 이상 참조하지 않는 캐시 파일을 모은 **더 이상 쓰지 않는 npm 캐시 데이터** 그룹(기본 선택), npm 로그, 선택되지 않은 행으로 나오는 Conda의 `~/.conda/pkgs`가 있습니다. 선택되지 않은 행은 직접 고를 때까지 그대로 있고, 확인하기 전에는 아무것도 제거되지 않습니다. npm 규칙은 [Mole에서 npm cache verify보다 캐시를 적게 지우는 이유](https://mole.fit/ko/blog/mole-developer-cache-gc)에서, 다른 툴체인은 [개발자 캐시 비우기](https://mole.fit/ko/blog/how-to-clear-dev-caches-mac)에서 다룹니다.

## 확인하기

새 터미널 윈도우를 열고 다음을 실행합니다.

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

제거한 사본은 더 이상 나오지 않아야 합니다. 남은 Python이 `/usr/bin/python3`뿐이라면 그것은 시스템 사본이므로 정상입니다. Node를 모두 제거하려 했다면 `node`에 대해 "command not found"가 나오는 것이 맞는 결과입니다. 예전 버전이 여전히 실행된다면 셸 파일 중 하나에 PATH 줄이 남아 있거나 다른 설치 프로그램이 다른 곳에 두 번째 사본을 둔 것이니, 첫 단계로 돌아가세요.

## 자주 묻는 질문

### Mac에서 Python은 어떻게 제거하나요?

`which -a python3`로 어느 사본인지 확인한 다음 설치한 방식대로 제거합니다. Homebrew라면 `brew uninstall python@3.x`, pyenv라면 `pyenv uninstall`, python.org라면 응용 프로그램 폴더, 프레임워크 버전, `/usr/local/bin` 링크를 제거합니다. macOS의 것인 `/usr/bin/python3`은 지우지 마세요.

### Mac에서 Node.js는 어떻게 제거하나요?

Homebrew라면 `brew uninstall node`, nvm이라면 `nvm uninstall <version>`을 씁니다. nodejs.org 설치 프로그램이라면 `/usr/local/bin/node`, `npm`, `npx`와 `/usr/local/lib/node_modules` 아래의 npm 폴더를 제거한 다음 `org.nodejs.node.pkg`와 `org.nodejs.npm.pkg` 영수증을 삭제합니다.

### Mac에서 Anaconda를 완전히 제거하려면 어떻게 하나요?

`conda activate`와 `conda init --reverse --all`을 실행하고, `conda info --base`가 알려 주는 `~/anaconda3`나 `/opt/anaconda3` 같은 설치 폴더를 삭제한 다음, 원하면 `~/.condarc`, `~/.conda`, `~/.continuum`도 제거합니다.

### macOS에 들어 있는 Python을 지워도 되나요?

안 됩니다. Python 문서에 따르면 `/usr/bin/python3`은 Apple이 관리하고 Apple과 타사 소프트웨어가 사용하므로 절대 수정하거나 삭제하면 안 됩니다. 다른 Python을 옆에 설치하고 PATH로 어느 쪽을 실행할지 정하세요.

### Python을 제거했는데 왜 python3가 여전히 실행되나요?

다른 사본이 아직 PATH에 있거나(흔히 macOS의 `/usr/bin/python3`), 터미널이 여전히 예전 PATH를 쓰고 있기 때문입니다. 새 윈도우를 열고 `which -a python3`를 실행한 다음, `~/.zshrc`나 `~/.zprofile`에 남은 PATH 줄을 지우세요.

---

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