CrescentCrescent
PostsTagsAbout

> Let's use uv

Crescent

🐍 Python 기반 프로젝트에서 패키지 관리자 uv 사용법을 정리해 효능을 영업하고 싶어 작성
프로젝트를 init해서 진행할 때 사용될 명령어들을 정말 간단히 정리
자세한 사용법은 uv 공식 문서를 참고하세요!!

0. 서론

1. 명령어 정리

1.1. install uv & python version

macOS와 Linux에서 설치
curl -LsSf https://astral.sh/uv/install.sh | sh
Python 버전 설치
uv python install 3.12 3.13

1.2. initialize project

프로젝트 초기화
uv init some_project --python 3.12
some_project 
├──.python-version
├── README.md
├── main.py
└── pyproject.toml
uv init 명령어 실행 후 생성된 프로젝트 구조

1.3. package management

[🌙]: uv와 pyproject.toml은 npm에서 package를 추가하는 것과 유사하게 작동되는 것과 같은 생각

1.3.1. uv add: 패키지 추가

uv add torch torchaudio torchvision
uv add -r requirements.txt

1.3.2. uv pip install: 가상환경에만 패키지 설치

uv pip install transformers

별 일 없으면 uv add 명령어를 사용하자 👍

1.3.3. uv lock: pyproject.toml기반으로 uv.lock 갱신, 패키지 설치⋅삭제 X

uv lock

1.3.4. uv sync: 가상 환경을 uv.lock과 동일한 상태로 재설치

uv sync

uv sync 명령어를 더 사용하고 있습니다.

1.3.5. uv export: pyproject.toml 기반으로 requirements.txt 생성

requirements.txt 생성
uv export -o requirements.txt

1.4. run python script

Python 스크립트 실행
uv run train.py
uv run python train.py
두 가지 방법 모두 동일하게 작동

1.5. Jupyter Notebook in vscode (cursor)

Jupyter Notebook 설치
uv add jupyter ipykernel

1.5.1. 현재 VS Code의 워크스페이스 폴더(parent_folder)가 uv init된 폴더인 경우

1.5.2. [parent_folder] 안에 uv init sample-project로 생성한 하위 폴더가 있는 경우

  1. [sample-project] 폴더를 VS Code에서 별도 워크스페이스로 연다.
  2. [sample-project] 내 .ipynb 파일에서 [커널 선택] → [Python 환경 선택] → [.venv (./venv/bin/python)] 선택 → cell 실행해서 커널 작동 확인
  3. 이후 [parent_folder]로 돌아가 [sample-project] 안의 .ipynb 파일을 열면, 해당 가상환경이 자동으로 선택된 것을 확인할 수 있다.

2. 마무리

2.1. Cheat sheet

2.1.1. 많이 사용하는 명령어 모음

uv init sample-project --python 3.12
uv add <some_package>
uv run <some_script>
uv sync

2.1.2. 프로젝트에 적용된 가상환경 활성화

source .venv/bin/activate

2.1.3. 파이썬 버전 바꾸는 법

  1. .python-version 파일에서 써진 파이썬 버전 변경
  2. uv sync 실행 -> 가상환경이 해당 파이썬 버전으로 자동 동기화(.venv 폴더 내의 파이썬 버전 변경됨)

2.2. Use 'asdf' for global python version management

asdf plugin list
asdf plugin list

[🌙]: 현재 웹 애플리케이션 개발에 nodejs, jekyll 개발을 위해 ruby, 그리고 글로벌 파이썬 환경 설정을 위해 python도 사용 중

#### === 대충 설치 진행 === ####
asdf plugin add python # python plugin 설치
asdf list python # 설치 가능한 python 버전 확인
asdf install python 3.12.9 # python 버전 설치
asdf set global python 3.12.9 # 글로벌로 설정
asdf for python