Docker 컨테이너에서 Python 언어를 기반으로 프로젝트를 진행하다 보면 항상 모든 Python 개발자가 똑같이 겪는 문제가 있다.
그것은 바로 requirements.txt로 패키지를 새롭게 설치할 때마다 기다려야 하는 그 지루한 시간이다.
도커 컨테이너 기반의 환경에서 requirements.txt 내의 패키지가 추가/삭제 등이 되는 과정에서 컨테이너를 리빌드 하는 과정에 항상 패키지를 인스톨하는 과정이 싫어서 직접 커맨드로 설치하고 추가하는 일이 잦았다. -> 좋지 않은 습관이다.
반복되는 시간이 답답해서 Poetry 같은 패키지 도구를 써볼까도 고민했었지만 컨테이너 환경에서 쓰기 썩 좋지는 않다고 생각되었기에 도입을 망설이고 있었다.
그러다가 최근에 Rust 언어로 개발된 파이썬 패키지 및 프로젝트 관리 도구가 있다는 이야기를 들었다!
해당 도구의 이름은 바로 uv 이다.
- uv는 기존의 pip, venv, pyenv, poetry 등과 유사한 기능을 제공하지만, rust로 작성되어서 속도가 매우 빠르다고 설명 되어있다.
- Link : https://docs.astral.sh/uv/pip/
패키지 관리 도구 없이 requirements.txt에 명시된 패키지를 설치하는 경우 : 약 30초

uv 도구를 활용해 requirements.txt에 명시된 패키지를 설치하는 경우 : 6초


=> 어? 제목에는 10배 이상 시간을 단축한다면서 5배밖에 단축이 안되는데요?! 라고 보는 분들이 이야기 할 수 있다.
그래서 현재 팀에서 서비스 개발 시 사용된 requirements.txt로 비교해보려고 한다.
requirements.txt만 직접 설치하는 경우

uv 도구를 통해 requirements.txt 파일에 동봉된 패키지를 설치하는 경우

직접 설치한 시간을 70초로 반올림 , uv 도구를 통해 설치한 시간을 12초로 반올림 했을때 약 5.8배 가량 시간이 단축된것을 알 수 있다.

=> 여전히 10배 이상 시간 차이가 안나잖아요!!

저는 거짓말을 하지 않았습니다. (해당 도구의 소개 페이지에 적힌 내용대로 전달했을 뿐이에요)
5배가 빠르더라도 충분히 여러분들의 시간을 단축시켜줄 수 있을거라고 생각합니다.
대신 제가 dockerfile에서 uv를 사용하기 위해 사용된 코드를 공유드립니다.
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
RUN uv pip install --system -r requirements.txt
저의 부족한 글이 도움이 되셨다면 감사합니다.
마침
'Language > Python' 카테고리의 다른 글
| 내부 도구에서 PyPI 패키지로: 한국 공휴일 라이브러리 개발 여정 (0) | 2025.09.16 |
|---|