본문 바로가기
즐거운, 즐겁게/딥러닝, 두고두고 꺼내보는

[딥러닝 이론 + PyTorch 실무 완전 정복 #1] 맥에서 PyTorch 개발 환경 만들기 — venv · 미니콘다 · VSCode

by DoubleS2 2026. 8. 4.
딥러닝 이론 + PyTorch 실무 완전 정복 첫 번째 편. 이론에 들어가기 전에 손부터 풀어둡니다.
맥에서 **파이썬 · 가상환경 · VSCode · PyTorch**를 어떤 순서로 엮는지, 제가 실제로 밟은 순서 그대로 정리합니다.


📎 출처: 이 글은 인프런 [「딥러닝 이론 + PyTorch 실무 완전 정복」](https://www.inflearn.com/course/딥러닝-이론-파이토치-실무-정복) (변정현) 강의를 수강하며 쓰는 복습 기록입니다. 딥러닝 기초를 오래 기억하고 싶어서, 강의 내용을 제가 이해할 수 있는 방향으로 다시 정리한 글입니다.


🎯 1. 딥러닝 프로젝트에 필요한 준비물 4가지

강의 첫 섹션은 모델 이야기가 아니라 "뭘 깔아야 시작할 수 있나"로 시작합니다.

 

그 준비물을 네 갈래로 나눠 설명하는데, 저는 이 분류가 마음에 들었어요.

설치 순서가 아니라 "역할"로 나뉘어 있거든요.

딥러닝 프로젝트를 시작하는 데 필요한 준비물 4가지와 이 글에서 고른 선택지


하나씩 짧게 보면 이렇습니다.

준비물 하는 일 강의의 선택
Deep Learning Framework 자동 미분(Auto Differentiation)과 optimizer·스케줄러를 대신 구현해줌 PyTorch
Computing Resource  학습을 실제로 돌릴 장치. CPU·GPU·TPU / 로컬·Colab·서버 mac local
(Apple Silicon)
Python 두 프레임워크가 공통으로 쓰는 언어. 메모리·포인터를 신경 쓰지 않아도 됨 Python 3.13
Programming IDE 디버깅·자동완성·코드 검사를 묶어주는 편집 환경 VSCode


강의에서는 "IDE는 취향이니 편한 걸 쓰세요"라고 하고 넘어갑니다.

저는 이미 VSCode를 쓰고 있어서 그대로 갑니다.

그런데 강의 자료의 맥 설정 부분은 외부 링크로 넘어가고, IDE도 설치까지만 다룹니다.
그래서 이 글은 강의의 네 갈래는 그대로 두고, 맥에서 실제로 손이 가는 순서를 제가 채워 넣은 버전입니다.

 

💡 저는 이 네 가지를 엔진(프레임워크) · 연료를 태울 장치(리소스) · 조작 언어(파이썬) · 운전석(IDE)으로 외웠어요.
     넷 중 하나만 비어도 시동이 안 걸립니다.

⚙️ 2. 맥의 기본 파이썬부터 확인하기

제 맥에는 파이썬이 이미 있었습니다.

그래서 "그냥 이걸로 하면 되겠지"하고 시작하기 쉬운데, 여기가 첫 함정입니다.

먼저 지금 상태를 확인합니다.

python3 -V
which python3


제 맥은 Python 3.9.6이 나왔습니다.
문제는 PyTorch가 요구하는 최소 버전이 Python 3.10 이상이라는 것. 3.9로는 애초에 최신 PyTorch가 설치되지 않습니다.

그래서 3.13.3을 새로 깔아 환경을 준비했습니다.

처음엔 3.9를 지우려고 했는데 시스템 파이썬은 건드리면 안 됩니다.

macOS가 소유한 파일이라 다른 도구들이 같이 깨진다고 하더라고요.

클로드는 이 때 삭제가 아니라 앞에 세우기 방법을 알려주었습니다.

시스템 파이썬은 그대로 두고, 새 파이썬이 먼저 잡히게 하는 것이지요.

맥 안에는 파이썬이 여러 개 있습니다. 재료로 쓰는 것과 작업방으로 쓰는 것을 갈라두면 헷갈리지 않습니다



파이썬 버전을 갈아 끼우는 도구로는 pyenv를 씁니다. 

없다면 Homebrew로 설치하면 됩니다.

brew install pyenv


설치 후에는 `~/.zshrc`에 아래 한 줄이 있어야 pyenv가 셸에 붙습니다.

command -v pyenv >/dev/null && eval "$(pyenv init -)"

 

이제 원하는 버전을 설치하고, 전역 기본값으로 지정합니다.

pyenv install 3.13.3
pyenv versions
pyenv global 3.13.3


터미널을 새로 열고 다시 확인하면 버전이 바뀌어 있습니다.

python3 -V
which python3

pyenv global로 전역 파이썬을 3.13으로 바꾼 뒤의 확인 결과


되돌리고 싶으면 `pyenv global system` 한 줄이면 원래대로 돌아온다고 하니 참고하세요.

💡 맥 안의 파이썬은 여러 개 공존하고, 셸은 그 중 맨 앞에 있는 걸 집어 올 뿐입니다.

📦 3. 이미 있는 파이썬으로 가상환경(venv) 만들기

파이썬을 정리했으면 이제 프로젝트별 가상 환경을 만듭니다.

가장 가벼운 방법은 파이썬에 기본 내장된 venv입니다. 별도 설치가 필요 없습니다.

mkdir -p ~/study/pytorch-basic
cd ~/study/pytorch-basic
python -m venv .venv

 

`.venv`라는 폴더가 프로젝트 안에 생겼을 겁니다. 여기에 이 프로젝트 전용 파이썬과 패키지가 들어갑니다.

쓰려면 활성화해야 합니다.

source .venv/bin/activate


프롬프트 맨 앞에 `(.venv)`가 붙으면 성공입니다. 이 상태에서 확인해보세요.

which python
python -V
pip list

venv를 활성화하면 프롬프트 앞에 (.venv)가 붙고, python 경로가 프로젝트 안으로 바뀝니다


`pip list`가 거의 비어 있는 게 정상입니다. 깨끗한 방을 새로 얻은 것이니까요.

빠져나올 때는 `deactivate`아예 지울 때는 `.venv` 폴더를 삭제하면 끝입니다.
깃을 쓴다면 `.gitignore`에 `.venv/`를 꼭 넣어주세요.

가상환경은 공유하는 게 아니라 각자 다시 만드는 것입니다.

💡 venv는 **"프로젝트 폴더에 딸린 서랍"**입니다. 폴더를 지우면 같이 사라지고, 다른 프로젝트에는 영향이 없습니다.

🐳 4. 미니콘다 설치해서 전역으로 쓰기

강의는 미니콘다(Miniconda)를 기준으로 진행합니다.

venv와 달리 이건 어느 폴더에서든 이름으로 불러 쓰는 방식이에요.

미니콘다는 아나콘다(Anaconda)의 가벼운 버전이라고 보면 됩니다.

수백 개 패키지를 미리 깔아주는 아나콘다와 달리, conda + 파이썬만 들어있습니다.

 

① 내려받기 — 반드시 Apple Silicon용으로

[아나콘다 다운로드 페이지](https://www.anaconda.com/download/success)에 들어가 상단 탭을 Mac으로 맞춥니다.

카드가 두 개 나옵니다.

왼쪽 Anaconda Distribution은 패키지 600개가 딸려오는 무거운 쪽, 오른쪽 Miniconda가 우리가 받을 가벼운 쪽입니다.

두 카드가 나란히 보입니다. 오른쪽 Miniconda의 Apple silicon 설치본을 고릅니다


Miniconda 카드의 `64-Bit (Apple silicon) Graphical Installer`를 누르면 `Miniconda3-latest-MacOSX-arm64.pkg`가 내려받아집니다.

여기서 실수하기 쉬운 게 칩 종류입니다.

M1·M2·M3·M4 맥이라면 반드시 `Apple silicon`이 붙은 것이어야 합니다.

Intel용(`x86_64`)을 받으면 설치는 되지만 로제타로 도는 느린 파이썬이 되고, MPS 가속도 못 씁니다.

 

② 설치하고 셸에 붙이기

`.pkg`는 더블클릭 후 안내를 따라가면 됩니다.

설치 위치는 기본값 그대로 두세요. 저는 `/opt/miniconda3`에 깔렸습니다.

터미널에서 한 번에 하고 싶다면 아래 4줄이 공식 문서와 같은 방식입니다.

mkdir -p ~/miniconda3
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh

 

설치가 끝나면 conda를 셸에 등록합니다. 맥의 기본 셸은 zsh입니다.

`.pkg`로 설치했다면 이 과정은 설치 프로그램이 알아서 해줍니다.

~/miniconda3/bin/conda init zsh


터미널을 완전히 껐다 켠 뒤 확인합니다.

conda --version
conda env list

 

conda 명령이 잡히면 설치 완료. env list에 base 환경이 보입니다

 

③ base 자동 활성화는 꺼두기

`conda init`을 하면 터미널을 열 때마다 `(base)`가 자동으로 붙습니다.

이게 편해 보이지만, 앞서 맞춰둔 pyenv 파이썬을 conda가 가려버립니다.

저는 꺼두는 쪽을 택했어요.

conda config --set auto_activate false


예전 자료에는 `auto_activate_base`로 나오는데, 지금은 `auto_activate`로 이름이 바뀌었습니다. 

옛 이름을 쓰면 별칭이라는 경고가 뜨고 새 이름으로 저장됩니다.

이제 conda는 필요할 때만 부르는 도구가 됩니다.


번외 — 프롬프트에 붙는 (base)가 거슬린다면
저는 Starship 프롬프트를 쓰는데, conda가 PS1 앞에 `(base)`를 따로 끼워 넣어서 프롬프트 윗줄에 덩그러니 뜨는 게 보기 싫었습니다.

conda가 프롬프트를 건드리지 않게 하면 깔끔해집니다.

conda config --set changeps1 false

 

대신 환경 이름은 프롬프트 도구 쪽에서 그리게 하면 됩니다.

Starship이라면 `format`에 `$conda`를 넣고 아래 블록을 추가합니다.

[conda]
symbol = " "
style = "fg:peach"
format = '[$symbol$environment ]($style)'
ignore_base = true


`ignore_base = true` 덕분에 **base일 때는 아무것도 안 뜨고**,

`dl` 같은 실제 환경을 켰을 때만 이름이 한 줄 안에 붙습니다.

④ 강의용 환경 만들기

환경 이름과 파이썬 버전을 같이 지정해 만듭니다.

conda create -n dl python=3.13 -y
conda activate dl
python -V


`conda deactivate`로 빠져나오고, `conda env list`로 만든 환경들을 볼 수 있습니다.

여기서 약관(Terms of Service) 에러가 나면서 막힐 수 있습니다.

저도 걸렸고, 해결 방법은 8단원 함정 4에 정리했습니다.

 

💡 venv가 __서랍__이라면 conda 환경은 "공용 창고에 이름표를 붙여 만든 칸"입니다.
     프로젝트 폴더를 옮기거나 지워도 환경은 그대로 남아 있어요.

⚖️ 5. venv와 conda, 언제 무엇을 쓰나

둘 다 만들어 놓고 나면 자연스럽게 드는 질문입니다.

 

"그래서 뭘 쓰라는 거지?"

비교 항목 venv conda (미니콘다)
어디에 생기나 프로젝트 폴더 안 `.venv/` 미니콘다 설치 폴더의 `envs/` 아래
파이썬 버전 만들 때 쓴 파이썬으로 고정 환경마다 다른 버전 지정 가능
설치 대상 파이썬 패키지만 파이썬이 아닌 것(컴파일러·라이브러리)도
부르는 방법 경로로 activate 이름으로 activate
설치 필요 파이썬에 기본 내장 미니콘다를 따로 설치
어울리는 상황 가벼운 프로젝트, 배포용 정리 강의 실습, 버전 실험


제 기준은 이렇게 정리했습니다.

혼자 쓰는 작은 프로젝트는 venv, 파이썬 버전까지 바꿔가며 실험하는 강의 실습은 conda.

둘을 한 프로젝트에 섞지만 않으면 충돌할 일은 없습니다.

 

⚠️ 하나만 지키세요 — 한 프로젝트에 하나의 환경.
   `(base)`와 `(.venv)`가 프롬프트에 동시에 떠 있으면, 지금 pip가 어디에 설치하는지 아무도 모릅니다.

💻 6. VSCode에 가상환경 물리기

강의는 IDE를 설치까지만 다루지만, 전 VSCode 와 연동해서 사용하기 위해 세팅했습니다.

만든 가상환경을 VSCode가 알아보게 하는 것.

이걸 안 하면 터미널에서는 되는데 실행 버튼으로는 안 되는 상황이 생깁니다.

 

① 폴더 열기 + Python 확장

VSCode에서 `File → Open Folder`로 프로젝트 폴더를 엽니다.

파일 하나만 여는 게 아니라 폴더째 열어야 합니다.

그다음 확장(Extensions) 탭에서 마이크로소프트의 Python 확장을 설치합니다.

노트북을 쓸 거라면 Jupyter도 함께요.

프로젝트 폴더를 열고 Python 확장을 설치한 상태

 

② 인터프리터 고르기 — 이 글에서 제일 중요한 단계

`⇧⌘P`로 명령 팔레트를 열고 Python: Select Interpreter를 칩니다.

목록에 아까 만든 것들이 나옵니다. 

프로젝트 안의 `.venv`는 보통 Recommended로 맨 위에 뜨고, conda 환경은 `dl` 같은 이름으로 보입니다.

Python: Select Interpreter 목록. .venv와 conda 환경이 함께 보입니다

 

고르고 나면 창 오른쪽 아래 상태 표시줄에 선택한 환경이 표시됩니다. 여기를 눌러서 바꿀 수도 있어요.

 

③ 통합 터미널까지 확인하기

인터프리터를 고르면 VSCode 안에서 새 통합 터미널을 열 때 자동으로 그 환경이 활성화됩니다.

통합 터미널 단축키는 Control + 백틱입니다.

백틱은 숫자 `1` 왼쪽, 물결표(`~`)와 같은 키예요.

메뉴로는 `Terminal → New Terminal`.

⚠️ 한글 입력 상태에서는 이 단축키가 안 먹습니다. 그 키가 한글 모드에서 `₩`으로 나가거든요. 영문 입력으로 바꾸고 누르세요.

 

프롬프트에 `(.venv)`나 `(dl)`이 붙어 있는지 눈으로 확인하세요. 

이게 붙어 있으면 `pip install`이 엉뚱한 곳으로 갈 일이 없습니다.

상태 표시줄의 인터프리터와, 통합 터미널에 자동으로 붙은 환경 이름

 

④ 터미널에서 code 명령 쓰기

명령 팔레트에서 Shell Command: Install 'code' command in PATH를 한 번 실행하면 끝입니다.

cd ~/study/pytorch-basic
code .

 

💡 터미널의 환경과 편집기의 환경은 별개입니다. 상태 표시줄을 한 번 보는 습관이 삽질을 절반으로 줄여줍니다.

🧪 7. PyTorch 설치하고 MPS로 확인하기

환경을 활성화한 상태에서 설치합니다.

pip install --upgrade pip
pip install torch torchvision torchaudio


맥에서는 conda 환경을 쓰더라도 pip로 설치하는 게 공식 안내입니다.

CUDA 버전을 고를 필요도 없어요.

설치가 끝나면 확인용 파일 하나를 만듭니다.

import torch

print("torch:", torch.__version__)
print("MPS 빌드됨:", torch.backends.mps.is_built())
print("MPS 사용 가능:", torch.backends.mps.is_available())

device = "mps" if torch.backends.mps.is_available() else "cpu"
x = torch.rand(3, 3, device=device)
print(x.device)
print(x)

 

`MPS 사용 가능: True`와 `mps:0`가 찍히면 애플 실리콘 GPU까지 붙은 것입니다.

VSCode에서 확인 스크립트를 실행한 결과. MPS까지 잡히면 환경 설정 끝입니다

 

여기서 MPS는 Metal Performance Shaders의 줄임말로, 맥의 GPU 백엔드입니다.

엔비디아의 CUDA 자리에 맥에서는 이게 들어간다고 보면 됩니다.

강의에서 GPU·TPU가 미니배치 경사하강법의 backward pass에 특히 유리하다고 설명하는데,

맥에서 그 자리를 맡는 게 MPS입니다.

다만 CUDA만큼 모든 연산이 구현돼 있지는 않습니다.

아직 지원되지 않는 연산을 만나면 CPU로 넘겨주는 옵션이 있습니다.

export PYTORCH_ENABLE_MPS_FALLBACK=1

지금까지의 전체 순서 한 장 요약. 3번에서 갈라졌다가 4번에서 다시 합쳐집니다


⚠️ 8. 제가 걸린 함정 넷

설치 자체보다 여기서 시간을 더 썼습니다. 순서대로 적어둡니다.

함정 1 — 3.9에서 torch를 설치하려 했다

증상은 `Could not find a version that satisfies the requirement torch` 같은 메시지입니다.
패키지 이름이 틀린 것 같아 보이지만, 실제 원인은 파이썬 버전에 맞는 배포 파일 자체가 없는 것 입니다.

해결은 2번 단원 그대로 — 파이썬을 3.10 이상으로 올린 뒤 다시 설치합니다.


함정 2 — 프롬프트에 (base)가 계속 붙어 있었다

`conda init` 이후 모든 터미널이 conda의 base 환경으로 시작합니다.

그 상태에서 `pip install`을 하면 내가 만든 환경이 아니라 base에 설치됩니다.

`conda config --set auto_activate false`로 꺼두면 깔끔합니다.

 

함정 3 — 터미널에선 되는데 실행 버튼으로는 안 됐다

터미널에서 `python check_env.py`는 잘 도는데,

VSCode 실행 버튼을 누르면 `ModuleNotFoundError: No module named 'torch'`가 났습니다.

VSCode가 아직 시스템 파이썬을 보고 있었기 때문입니다.

인터프리터를 다시 고르면 바로 해결됩니다.

 

⚠️ 앞의 세 함정은 공통점이 하나였습니다 —  "지금 이 명령이 어느 파이썬을 쓰고 있는가"를 확인하지 않은 것.
    `which python`이 답을 다 알려줍니다.

 

함정 4 — conda 환경을 만들려는데 약관 때문에 막혔다

`conda create`를 치자마자 이런 에러가 났습니다.

CondaToSNonInteractiveError: Terms of Service have not been accepted for the following channels.
    - https://repo.anaconda.com/pkgs/main
    - https://repo.anaconda.com/pkgs/r


Anaconda가 공식 채널에 이용약관 동의를 요구하도록 바뀌면서 생긴 것입니다.

지금 미니콘다를 새로 까는 사람은 대부분 만나게 됩니다.

해결은 두 갈래입니다.

안내대로 약관에 동의하거나, 아예 채널을 conda-forge로 바꾸는 것.

conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

 

저는 두 번째를 택했습니다. conda-forge는 커뮤니티 채널이라 약관 절차가 없고, 딥러닝 쪽에서 사실상 표준으로 쓰입니다.

conda config --remove channels defaults
conda config --add channels conda-forge
conda config --set channel_priority strict

 

그런데 여기서 한 번 더 막혔습니다. 채널을 바꿨는데도 같은 에러가 계속 났습니다.

확인해보니 설정 파일이 하나가 아니었어요.

conda config --show-sources


`~/.condarc`(내 설정) 말고 미니콘다 설치 폴더 안에도 `.condarc`가 따로 있었고, 거기에 `defaults`가 그대로 남아 있었습니다.

conda는 이 파일들을 합쳐서 읽습니다. 그래서 내 쪽만 고쳐서는 `defaults`가 계속 따라붙었던 것.

conda config --system --remove channels defaults


이 한 줄로 설치 폴더 쪽까지 정리하니 그제야 `conda create`가 통과했습니다.

 

💡 이 함정에서 배운 건 "conda 설정은 한 파일이 아니다" 입니다.
     `conda config --show`는 __합쳐진 결과__를,
     `--show-sources`는 __어디서 왔는지__를 보여줘요.
     설정이 말을 안 들으면 후자를 먼저 봐야 합니다.

✍️ 마무리 & 다음 단계

정리하면 이번 편은 파이썬 정리 → 가상환경(venv / conda) → VSCode 연결 → PyTorch 설치와 MPS 확인, 이 네 걸음이 전부입니다.

강의가 준 뼈대는 프레임워크 · 리소스 · 파이썬 · IDE 네 가지였고, 맥에서 그걸 실제로 채우면 위 순서가 됩니다.

환경 설정은 한 번 해두면 다시 볼 일이 없어서 오히려 기록해두지 않으면 다음에 또 헤매는 영역이라고 생각해요.

그래서 첫 편으로 골랐습니다.


📎 출처: 이 글은 인프런 [「딥러닝 이론 + PyTorch 실무 완전 정복」](https://www.inflearn.com/course/딥러닝-이론-파이토치-실무-정복) (변정현) 강의를 수강한 뒤, 딥러닝 기초를 오래 기억하기 위해 개인 학습 목적으로 다시 정리한 것입니다. 강의 자료를 그대로 옮기지 않았고, 맥 환경의 실행 절차는 제가 직접 진행하며 채웠습니다. 잘못 이해한 부분이 있다면 댓글로 알려주세요. 🙏