728x90

Python 생태계에서 패키지 관리와 가상환경 설정은 필수입니다. 그동안 pipenv, poetry와 같은 도구들이 널리 쓰였지만, 최근엔 극강의 속도와 단순함을 자랑하는 새로운 패키지 매니저 uv가 주목받고 있습니다.

Python 패키지 매니저 비교: pipenv, poetry, uv

기능 / 도구 pipenv poetry uv (by Astral)
가상환경 관리 내장 (자동 생성) 내장 (PEP 582 미지원) 내장 (자동 venv 생성 및 활성화)
설치 속도 느림 보통 매우 빠름 (Rust 기반)
의존성 해결 pipfile.lock 기반 pyproject.toml + poetry.lock 사용 pyproject.toml, uv.lock 지원
lockfile 지원
CLI 편의성 제한적 (pip + virtualenv wrapper) 직관적, 다양한 명령어 지원 심플한 CLI (uv pip, uv venv 등)
커뮤니티 및 안정성 오래된 프로젝트, 유지 보수 적음 성숙한 프로젝트, 인기 많음 신생 도구, 빠르게 성장 중

실사용 후기 (개인 기준)

  • pipenv : 작은 프로젝트에선 문제없지만, 복잡한 의존성에서는 종종 충돌 발생. 속도도 느림.
  • poetry : 문법도 직관적이고, 대규모 프로젝트에 적합. 다만, 설치 속도가 아쉽고 느릴 때가 있음.
  • uv : 설치 속도와 가벼움은 진짜 최고. Rust 기반이라 poetry보다 훨씬 빠르고, pip 대비 의존성 해결도 안정적.

결론: 속도와 간결함이 필요한 경우 uv가 최적. 대규모 프로젝트에서 신뢰성과 커뮤니티를 원한다면 poetry.

💻 macOS에 uv 설치하기 (with Homebrew)

1. 설치 명령어

brew install uv

2. 설치 확인

uv --version

⚙️ uv 기본 사용법

uv는 poetry 와 비슷하게 잠금 파일, 작업 공간 등을 지원하여 프로젝트 종속성과 환경을 관리합니다.

uv init 명령을 사용하여 새로운 Python 프로젝트를 만들 수 있습니다.

uv init uv-test
cd uv-test

uv는 다음 파일을 생성하며, 기본적인 파이썬 프로젝트 구조를 생성하게 됩니다.

.
├── .git
├── .gitignore
├── .python-version
├── main.py
├── pyproject.toml
└── README.md

main.py 파일에는 간단한 "Hello world" 프로그램이 포함되어 있습니다. uv run 명령어로 실행합니다.

uv run main.py

(결과)
Creating virtual environment at: .venv
Hello from uv-test!

uv run 을 실행하면, 프로젝트 내부에 파이썬 가상환경 .venv 가 자동으로 생성되며, 파이썬 프로그램이 실행됩니다.

📦 프로젝트 예시 구조

.
├── .git
├── .gitignore
├── .python-version
├── .venv
├── main.py
├── pyproject.toml
├── README.md
└── uv.lock

pyproject.toml 에는 poetry의 종속성 관리와 같이 프로젝트에 대한 메타데이터가 포함되어 있습니다.
pyproject.toml 을 사용하여 종속성은 물론, 프로젝트 설명이나 라이선스와 같은 세부 정보를 관리할 수 있고, uv adduv remove 명령을 사용하여 프로젝트를 관리할 수 있습니다.

🚀 마무리하며

Python의 패키지 관리 도구는 점점 더 다양해지고 있습니다. uv는 빠른 설치, 심플한 CLI, 강력한 의존성 해결을 통해 새로운 대안으로 부상하고 있습니다.
특히, poetry가 제공하는 워크플로우를 그대로 가져오면서도 훨씬 가볍고 빠르기 때문에, 개발 속도와 효율을 중요하게 여기는 개발자라면 꼭 한번 경험해보길 추천합니다.

Reference

728x90
반응형

+ Recent posts