콘텐츠로 이동

2026 04 07

2026-04-07

uv

참고: https://github.com/astral-sh/uv
참고: https://wikidocs.net/238310
참고: https://sigridjin.medium.com/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%9D%BC%EB%A9%B4-uv-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%A9%EC%8B%9C%EB%8B%A4-546d523f7178
참고: https://devocean.sk.com/blog/techBoardDetail.do?ID=167420&boardType=techBlog

  • 개요
    • 패키지 설치 및 관리와 패키지 빌드 및 배포까지 모두 가능한 파이썬 종속성/패키지/프로젝트 관리 툴
      • 기존 pip, pip-tools, pipx, poetry, pyenv, twine, venv 등의 프로젝트, 패키지 관리 툴 모두 대체!
    • Rust로 만들어 빠름
    • 가상환경 생성, 의존성 관리, 파이썬 버전 관리, 패키징, 포매터/린터 등 서드파티 도구 실행 처리
  • 가상환경
    • 프로젝트마다 의존성 (패키지/버전)을 격리해서 관리하기 위함
    • 파이썬은 pip로 패키지 설치하면 기본적으로 전역 site-packages에 들어감. 그 위 여러 프로젝트가 공유하여 쓰게 됨
      • 전역으로 설치하다보니, Django 버전이 다르게 두 프로젝트가 각각 필요하면, 충돌 생길 수 있음
      • 가상환경을 통해 프로젝트마다 독립된 site-packages를 사용하여 격리
    • 각 프로젝트의 requirements.txt, pyproject.toml로 정확한 패키지 버전 고정하면, pip install 하면 동일한 환경 재현
  • uv
    • 가상환경 만드는 방법
      • uv venv .venv
    • 파이썬 환경 설정 및 자동 설치
      • uv venv -p 3.13
    • 패키지 설치하기
      • uv pip install pytests
  • 예시

    1. 프로젝트 생성

      uv init uv-demo
      cd uv-demo
      
      uv-demo/
      ├── .python-version - 프로젝트에서 사용할 파이썬 버전 지정
      ├── .gitignore
      ├── pyproject.toml - 프로젝트의 메타데이터와 설정을 저장하는 파일
      ├── hello.py
      ├── requirements.txt - 프로젝트 의존성 목록 저장하는 파일
      └── README.md
      

    2. 의존성 설치

      # requirements.txt 설치
      uv init                           # pyproject.toml 생성(필요 시)
      time uv add -r requirements.txt   # 의존성 설치
      

      • uv run 명령어로 Python 파일을 실행할 때, 자동으로 .venv 환경이 적용
  • 명령어 소개
    • uv init: 새로운 uv 프로젝트 초기화, pyproject.toml 생성
    • uv add <패키지명>: 특정 패키지 추가
    • uv add -r requirements.txt: 전체 패키지 추가
    • uv sync: pyproject.toml과 uv.lock 파일을 기준으로 가상환경 재생성 및 동기화
    • uv run: 가상환경을 자동 적용하여 파이썬 스크립트 실행

gRPC