uv 사용해보기

2025. 8. 29. 17:26연구하기, 지식

 MCP를 공부하다가 uv 라는 것을 알게되었다. 어릴적 아이리버 MP3를 뜨겁게 달구던 그 UV 가 아니다. 파이썬 패키지 및 프로젝트 관리 도구이다. uv란 뭘까?

 uv를 알려면 우선 Rust를 먼저 알아야 한다. 파이썬은 배우기 쉽지만 느리다. C는 빠르지만 메모리 관리가 어렵다. 뭐 이런 프로그래밍 언어들의 장점들을 뽑은게 Rust이다. 마치 국 끓이기 좋게 맛있는 것만 모아 놓은 '코인 육수' 같은 놈이다. 이 Rust로 만든 맛있는 된장찌개가 바로 uv 이다. 기존 파이썬 환경은 가상환경을 생성하고 pip 설치가 굉장히 불편하고 느리다. requirements를 직접 작성 해야하고, pip는 파이썬으로 짜여져있어서 의존성 해석과 설치가 느리다. 이렇기에 이 가상환경을 어디로 옮기려고 한다면 엄청나게 오래걸린다. uv로 해결이 된다.

 테스트 환경은 리눅스에서 진행했다. Ubuntu 24.04.1 LTS.

명령어 무엇을 위한 결과
curl -LsSf https://astral.sh/uv/install.sh | sh uv 설치 everything's installed!
uv --version uv 버전 확인 uv 0.8.14
uv python list uv 사용 가능한 파이썬 리스트 cpython-3.12.11-linux-x86_64-gnu                   <download available>
cpython-3.12.3-linux-x86_64-gnu                    /usr/bin/python3.12
uv python install <파이썬 버전> 특정 파이썬 버전 설치 Installed Python 3.10.18 in 57ms
uv python pin <파이썬 버전> 특정 파이썬 버전 고정 Pinned `.python-version` to `3.10`
uv init <프로젝트 이름> 프로젝트 만들기(의존성 관리 + 가상환경 + main.py) Initialized project `uv-test` at `/test/kdj/path/uv_test`
uv add <패키지 이름> pip install 과 동일 Installed 1 package in 681ms
 + numpy==2.2.6
uv run <파이썬 파일.py> python 명령어와 동일  
uv sync 프로젝트 동기화  Resolved 3 packages in 31ms
Audited 1 package in 0.08ms

 

 우선 uv init 명령어로 프로젝트를 생성하면 다음과 같은 구조가 생성된다.

 

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

 

 이렇게 자동으로 템플릿(?)이 만들어 진다. .gitignore에는 자동으로 가상환경, 캐쉬 등이 포함되어 있다. .python-version에는 파이썬 버전이 있고 pyproject.toml 에는 패키지 의존성이 자동으로 기록된다. 따라서 우리는 uv를 사용하면 별도로 가상환경을 activate 할 필요 없다. 지가 알아서 다한다. 또한 패키지들을 생성하면 .venv라는 폴더가 생긴다. 나중에 가상환경을 다른 장소로 옮길 때 굳이 통째로 옮기지 않아도 uv sync 만 해주면 설치된다.

 uv를 사용하면 코드 실행 속도가 빨라지는 것은 아니지만 환경 관리가 너무 편하다. 진작에 알았으면 프로젝트에서 썼을 텐데... 앞으로 잘 써먹어보자.

728x90