Python 환경 설정 완벽 가이드 - glasslego/getting-started-with-python GitHub Wiki

pyenv, poetry, uv를 이용한 Python 개발 환경 통합 세팅 튜토리얼

🤔 왜 환경 설정이 필요한가?

🔥 문제 상황

  • 프로젝트마다 다른 Python 버전을 요구
  • 패키지 충돌 (예: numpy 1.20 vs 1.24)
  • 시스템 전역 Python을 건드려 OS 오류 발생

✅ 해결책

  • pyenv: Python 버전 관리
  • poetry: 가상환경 + 의존성 관리
  • uv: 둘 다 통합한 초고속 솔루션

🐍 pyenv - Python 버전 관리

pyenv란?

  • 여러 버전의 Python을 쉽게 설치하고 전환 가능
  • 프로젝트 단위로 Python 버전 고정 가능

설치 (macOS 기준)

brew install pyenv

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

# 사용 예시
pyenv install 3.11.7
pyenv install 3.9.18
pyenv global 3.11.7
pyenv local 3.9.18

poetry - 패키지 및 의존성 관리

poetry란?

  • Python 패키지 관리 도구
  • 가상환경 자동 생성 + 프로젝트별 의존성 관리
# 설치
curl -sSL https://install.python-poetry.org | python3 -
curl -ksSL https://install.python-poetry.org | python3 -
# sudo /Applications/Python\ 3*/Install\ Certificates.command
# export SSL_CERT_FILE=$(python3 -m certifi)

# echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
# source ~/.zshrc
poetry config virtualenvs.in-project true

# 사용 예시
poetry new my-app
poetry add requests pandas
poetry add pytest black --group dev
poetry shell
poetry run python main.py

pyproject.toml 예시

[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.31.0"
pandas = "^2.0.0"

[tool.poetry.group.dev.dependencies]
pytest = "^7.0.0"
black = "^23.0.0"

uv - 올인원 도구

uv란?

  • Rust 기반 초고속 Python 환경관리 툴
  • pyenv + poetry 기능 통합, 최대 100배 빠름
curl -LsSf https://astral.sh/uv/install.sh | sh

# 주요 명령어
uv init my-app
uv python install 3.11.7
uv python pin 3.11.7

uv add requests pandas
uv add pytest black --dev

uv run python main.py

참고 자료

최근엔 uv 를 많이 씀!