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를 사용하면 코드 실행 속도가 빨라지는 것은 아니지만 환경 관리가 너무 편하다. 진작에 알았으면 프로젝트에서 썼을 텐데... 앞으로 잘 써먹어보자.
'연구하기, 지식' 카테고리의 다른 글
NeMo Multi-Scale Diarization Decoder (9) | 2025.08.12 |
---|---|
파이썬에서 깔끔하게 임시 파일 관리하기 (2) | 2025.08.10 |
Supabase DB 사용해보기 (3) | 2025.07.06 |
Gemma3 - 무료 멀티모달 LLM 모델 사용하기 (3) | 2025.06.29 |
JIT 컴파일과 데코레이터 (2) | 2025.06.09 |