10/16/2025

Pyenv vs. uv

이제까지 블로그에 글을 작성할때는 평어체를 사용했었다. 경어체? 평어체? 고민이 많았는데., 본 글부터는 경어체를 사용할 생각이다.

파이썬 개발자는 다양한 프로젝트에서 여러 파이썬 버전을 사용할 경우가 자주 발생합니다. 이런 상황을 해결하기 위해서는 크게 두 가지 도구가 있습니다. pyenvuv 입니다. 본 글에서는 각 도구들의 접근 방식을 이해하고 어떤 도구를 사용해야 할지 결정을 내리는데 도움을 주고자 합니다.

디자인 철학

pyenv

pyenv는 "한 가지 일만 잘하자"라는 유닉스 원칙을 계승합니다. 해당 도구의 목적은 파이썬 인터프리터 설치 및 버전 전환을 관리하는 것입니다. 파이썬 버전을 선택한 후, 개발자는 pip 및 venv와 같은 익숙한 도구를 사용하여 패키지 관리 및 파이썬 가상 환경을 구축할 수 있습니다.

pyenv는 파이썬 명령을 가로채서 활성화되어 있는 파이썬 버전으로 자동 전달하는 shell shims을 통해 동작합니다.

uv

uv는 파이썬 버전 관리를 통합된 개발 툴킷으로 제공함으로써 근본적으로 다른 접근 방식을 취합니다. 단순히 인터프리터를 관리하는 것이 아니라 단일 인터페이스를 통해 설치, 환경 생성, 종속성 해결 및 패키지 관리 등을 처리합니다.

uv는 유닉스 방식의 철합보다 워크플로우를 통합하여 편의성과 성능을 우선시합니다.

설치 및 플랫폼 지원

크로스 플랫폼

pyrnv는 Unix 계열 시스템용으로 설계되었기에 Linux와 MacOS에서 잘 동작됩니다. 그러나 Windows 지원을 위해서는 pyenv-win이 필요합니다. 기능적으로는 같게 동작되지만, 플랫폼에 따라 동작 및 유지 관리 측면에서 차이가 발생하게 됩니다.

반면, uv는 처음부터 크로스 플랫폼 도구로 개발되었습니다. Windows, macOS, Linux에서 동일한 명령어가 동일하게 작동합니다. 플랫폼별 조정이나 별도의 설명서가 필요하지 않습니다.

Python 설치 방법

pyenv는 소스 코드로부터 컴파일하여 파이썬을 설치합니다. 이 방식은 유연성이 좋지만, 빌드 도구가 필요하고 시간이 소요됩니다. 시스템 종속성이 누락되면 컴파일이 실패할 수 있습니다.
uv는 미리 빌드된 파이썬 바이너리를 다운로드 합니다. 설치 속도가 빠릅니다.

버전 선택

pyenv

pyenv는 파이썬 명령어를 가로채기 위해 셀 환경을 수정합니다. pyenv local 3.11을 입력하면 해당 디렉토리의 파이썬 3.11이 자동으로 사용됩니다. 따라서 기존 스크립트와 워크플로우 수정 없이 동작됩니다.

uv

uv는 명확한 접근 방식을 취합니다. 파이썬 버전을 설치한다고 해서 자동으로 실행되는 것이 아닙니다. 아래중 하나를 수행해야 합니다.
  • uv run python 또는 uv run script.py
  • 생성된 가상 환경 활성화
명시적으로 요청하지 않는 한 uv가 파이썬에 간섭하는 것을 방지하지만, 워크플로우 조정이 필요합니다.

워크플로우 영향도

pyenv와 uv 중 어떤 것을 선택하느냐에 따라 개발 관행이 달라집니다.

pyenv를 사용한 워크플로우

  1. 필요한 Python 버전을 설치: pyenv install 3.12
  2. 프로젝트 버전 설정: pyenv local 3.12
  3. 가상 환경 생성: python -m venv .venv
  4. 환경 활성화: source .venv/bin/activate
  5. 종속성 설치: pip install -r requirements.txt

uv를 사용한 워크플로우

  1. 프로젝트 초기화: uv init
  2. 종속성 추가: uv add requests pandas
  3. 실행 코드: uv run script.py

상황별 선택 기준

pyenv 선택 상황

  • 주로 Unix 계열 시스템에서 작업
  • 기존 워크플로우와 통합되는 도구를 선호할 때
  • 파이썬 컴파일 및 사용자 정의에 대한 제어가 필요할 때
  • 전체 툴체인을 변경하는 것이 불가능한 환경에서 작업할 때

uv 선택 상황

  • 윈도우즈를 포함한 여러 플랫폼에서 작업
  • 빠른 속도를 원할 때 (환경 설정 및 패키지 설치)
  • 통합 툴킷 채택이 가능한 새로운 프로젝트
  • 여러 도구를 단일 인터페이스로 통합할 때

어떤 도구가 적합할까요?
Share:

잠깐, 글이 유익했나요?

Donate!

0 Comments:

댓글 쓰기