[Mac] Python 환경 리빌딩 (2): Pyenv + uv로 완성하는 초고속 워크플로우
지난 포스팅에서 우리는 맥북을 어지럽히던 Conda와 여러 버전의 파이썬을 완전히 정리했습니다. 혹시 아직 기존 환경을 정리하지 않으셨다면, 이전 글: [Mac] Python 환경 리빌딩 (1): Python 설정 초기화를 먼저 보고 오시는 것을 강력 추천합니다.
🛠️ 1. Pyenv: 파이썬 버전 관리의 표준
자바 진영에 SDKMAN이 있다면, 파이썬에는 Pyenv가 있습니다. 시스템 파이썬은 건드리지 않고, 내가 원하는 버전만 깔끔하게 설치하고 스위칭할 수 있게 해줍니다.
설치 및 셸 설정
# Homebrew로 설치
brew install pyenv
# .zshrc에 설정 추가 (이 설정이 있어야 pyenv가 활성화됩니다)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# 설정 반영
source ~/.zshrc
# 설치 확인
pyenv -v
pyenv 2.6.17

파이썬 버전 설치
AI/데이터 사이언스 분야에서 사용할 예정이기 때문에 3.12 버전을 선택하였다. (만약 보수적인 라이브러리를 사용해야 하는 상황이면 3.11을 선택해도 된다.)
# pyenv 설치 가능 version 확인
pyenv install --list | grep " 3.12"
# 최신 안정 버전 설치 (예: 3.12.12) - 다소 설치시 시간이 걸림
pyenv install 3.12.12
# 전역(Global) 버전으로 설정
pyenv global 3.12.12
# 확인
python3 --version # Python 3.12.12 가 나오면 성공!
만약 파이썬 버전 이 정상적으로 나오지 않으면 터미널(terminal)을 재시동 해 주면 정상적인 버전이 나오는 것을 확인할 수 있다.
⚡ 2. uv: Rust로 만든 초고속 패키지 매니저
uv는 Rust로 작성되어 기존 도구보다 10배에서 100배까지 빠릅니다. (pip, conda install 보다 매우 빠른 속도를 자랑합니다.)
uv 설치
curl -LsSf https://astral.sh/uv/install.sh | sh
# 설치 후 터미널 재시작 또는 소스 반영
source ~/.zshrc
# uv 설치 확인
uv --version
uv 0.9.21 (0dc9556ad 2025-12-30)
🏗️ 3. 실전 프로젝트 워크플로우 (가상환경)
이제 실제로 프로젝트를 시작할 때 어떻게 가상환경을 만들고 관리하는지 보여드리겠습니다. venv를 직접 호출할 필요 없이 uv가 모든 것을 처리합니다.
1) 프로젝트 준비
개인적으로 ~/workspace/python 을 파이썬 개발 루트(root) 로 진행 할 예정입니다.
# 이미 ~/workspace/python 있는 경우를 가정합니다.
cd ~/workspace/python
# 예제 프로젝트 생성
mkdir prompt-playground
cd prompt-playground
2) 가상환경 생성 및 활성화
1. 가상환경이란?
"프로젝트마다 필요한 라이브러리를 담는 전용 도구 상자를 만드는 것"이 바로 가상환경의 본질입니다.
2. 왜 가상환경을 써야 하나요?
버전 충돌 방지: 프로젝트 A는 Django 3.0 버전이 필요하고, 프로젝트 B는 Django 5.0 버전이 필요할 때, 한 컴퓨터에 모두 설치하면 충돌이 발생합니다. 가상환경은 이 둘을 분리해 줍니다.
깔끔한 시스템 관리: 컴퓨터 자체(Global)에 수많은 라이브러리를 설치하다 보면 시스템이 무거워지고 관리가 어려워집니다. 가상환경을 쓰면 프로젝트 폴더만 삭제해도 관련 라이브러리가 깔끔하게 정리됩니다.
협업의 용이성:
requirements.txt나pyproject.toml을 통해 팀원들과 정확히 동일한 라이브러리 환경을 공유할 수 있습니다.
# 가상환경 생성 (.venv 폴더가 생깁니다)
uv venv
# 가상환경 활성화 (macOS 기준)
source .venv/bin/activate

3. 표준적인 설정 방법과 차이점(?)
"uv는 가상환경을 만드는 '도구(Tool)'일 뿐이며, 그 결과물은 우리가 항상 사용하던 '파이썬 가상환경' 그 자체입니다."
uv venv vs python -m venv
두 명령어는 결과적으로 똑같은 형태의 가상환경 폴더를 만들어냅니다.
python -m venv .venv: 파이썬에 내장된 표준 도구로 가상환경을 만듭니다. (속도가 상대적으로 느림)uv venv: Rust로 작성된 초고속 도구인uv를 사용해 동일한 가상환경을 만듭니다. (비교할 수 없을 정도로 빠름)
3) 패키지 설치 (The Magic)
uv pip는 기존 pip와 완벽히 호환되면서 압도적인 속도를 보여줍니다.
# 무거운 라이브러리들도 순식간에 설치됩니다.
uv pip install numpy pandas torch scikit-learn
💡 Under-the-hood: 왜 이렇게 빠를까?
백엔드 엔지니어로서 기술적 배경을 살짝 짚어보자면:
Rust 기반: 인터프리터 언어인 파이썬이 아닌 컴파일 언어인 Rust로 엔진이 작성되었습니다.
글로벌 캐시: 한 번 다운로드된 패키지는 시스템 내 다른 프로젝트에서 재사용될 때 다시 다운로드하거나 복사하지 않고 **심볼릭 링크(Hardlink)**를 활용해 0초 만에 설치를 끝냅니다.
✅ 요약 및 마무리
이제 여러분의 맥북은 다음과 같은 완벽한 계층 구조를 갖게 되었습니다:
Pyenv: 파이썬 버전(Runtime)을 관리 (Java의 SDKMAN 역할)
uv: 패키지 설치 및 가상환경(Venv) 관리 (Gradle/Maven의 속도 강화판)
더 이상 (base) 환경에서 의존성이 꼬여 고생할 필요가 없습니다. 프로젝트마다 독립된 환경을 uv로 초고속으로 구축하세요.
파이썬 환경 설정에 대해 더 궁금한 점이 있거나, 설정 중 에러가 발생한다면 댓글로 알려주세요!