간단히 살펴보는 uv 사용법

간단히 살펴보는 uv 사용법

uv를 사용하는 방법을 다룹니다. uv는 Rust로 작성된 매우 빠른 Python 패키지 및 프로젝트 관리자입니다.

uv는 다양한 설치 방법을 제공하고 있습니다. 본 문서에서는 공식 설치 프로그램을 사용한 uv 설치 방법을 다룹니다.

단계별로 번호를 부여하여 윈도우와 우분투(맥OS도 동일하게 동작할듯합니다)에서 실행하는 것을 보여줍니다.

2025.3.20  최초작성 . uv를 간단히 사용해봤습니다.
2025.9.4 업데이트

2025.9.6 Visual Studio Code에서 uv를 사용하는 방법을 정리한 포스트가 추가되었습니다.

Visual Studio Code에서 uv 사용하기
https://webnautes.kr/visual-studio-codeeseo-uv-sayonghagi/

1. uv 설치

macOS and Linux

curl -LsSf https://astral.sh/uv/install.sh | sh
$ curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.8.15 x86_64-unknown-linux-gnu
no checksums to verify
installing to /home/webnautes/.local/bin
  uv
  uvx
everything's installed!

Windows

명령 프롬프트에서 실행합니다.

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
C:\Users\freem>powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"                              Downloading uv 0.8.15 (x86_64-pc-windows-msvc)                                                                                 Installing to C:\Users\freem\.local\bin
  uv.exe
  uvx.exe
  uvw.exe
everything's installed!

To add C:\Users\freem\.local\bin to your PATH, either restart your shell or run:

    set Path=C:\Users\freem\.local\bin;%Path%   (cmd)
    $env:Path = "C:\Users\freem\.local\bin;$env:Path"   (powershell)

명령 프롬프트를 다시 실행한 후 uv -V 명령어를 실행하여 설치된 uv가 사용가능한지와 버전을 확인합니다.

uv -V
C:\Users\freem>uv -V
uv 0.8.15 (8473ecba1 2025-09-03)

uv의 설치를 제거하려면 다음처럼 진행하세요.
윈도우의 경우엔 PowerShell에서 수행해야합니다.

1.저장된 데이터 정리

uv cache clean
rm -r "$(uv python dir)"
rm -r "$(uv tool dir)"

2.uv 바이너리 파일 제거

macOS and Linux

rm ~/.local/bin/uv ~/.local/bin/uvx

Windows

rm $HOME\.local\bin\uv.exe
rm $HOME\.local\bin\uvx.exe
rm $HOME\.local\bin\uvw.exe

2. 프로젝트 생성

새로운 프로젝트를 생성하고 초기 파일들을 설정합니다. 현재 위치에 init 뒤에 적은 이름의 디렉토리가 생성됩니다. 사용할 파이썬 버전도 지정하고 있습니다.

uv init  my-project --python 파이썬버전

Windows

파이썬 3.13을 사용하도록 myproject 디렉토리에 프로젝트를 생성합니다.

C:\Users\freem>uv init myproject --python 3.13
Initialized project `myproject` at `C:\Users\freem\myproject`

생성된 디렉토리 내에 파일들이 생성됩니다.

C:\Users\freem>cd myproject

C:\Users\freem\myproject>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: F286-9FFE

 C:\Users\freem\myproject 디렉터리

2025-09-04  오후 09:55    <DIR>          .
2025-09-04  오후 09:55    <DIR>          ..
2025-09-04  오후 09:55               109 .gitignore
2025-09-04  오후 09:55                 5 .python-version
2025-09-04  오후 09:55                87 main.py
2025-09-04  오후 09:55               155 pyproject.toml
2025-09-04  오후 09:55                 0 README.md
               5개 파일                 356 바이트
               2개 디렉터리  341,687,693,312 바이트 남음

uv python list 명령으로 설치된 파이썬을 확인합니다. 윈도우의 경우엔 파이썬이 설치되지 않았습니다. 우분투와 달리 설치할 파이썬 버전 지정하는 명령이 동작하지 않았습니다.

C:\Users\freem\myproject>uv python list
cpython-3.14.0rc2-windows-x86_64-none                 <download available>
cpython-3.14.0rc2+freethreaded-windows-x86_64-none    <download available>
cpython-3.13.7-windows-x86_64-none                    <download available>
cpython-3.13.7+freethreaded-windows-x86_64-none       <download available>
cpython-3.12.11-windows-x86_64-none                   <download available>
cpython-3.11.13-windows-x86_64-none                   <download available>
cpython-3.10.18-windows-x86_64-none                   <download available>
cpython-3.9.23-windows-x86_64-none                    <download available>
cpython-3.8.20-windows-x86_64-none                    <download available>
pypy-3.11.13-windows-x86_64-none                      <download available>
pypy-3.10.16-windows-x86_64-none                      <download available>
pypy-3.9.19-windows-x86_64-none                       <download available>
pypy-3.8.16-windows-x86_64-none                       <download available>
graalpy-3.11.0-windows-x86_64-none                    <download available>
graalpy-3.10.0-windows-x86_64-none                    <download available>

다음처럼 파이썬을 설치할 수 있습니다.

C:\Users\freem\myproject>uv python install 3.13
Installed Python 3.13.7 in 3.16s
 + cpython-3.13.7-windows-x86_64-none (python3.13.exe)

C:\Users\freem\myproject>uv python list
cpython-3.14.0rc2-windows-x86_64-none                 <download available>
cpython-3.14.0rc2+freethreaded-windows-x86_64-none    <download available>
cpython-3.13.7-windows-x86_64-none                    C:\Users\freem\AppData\Roaming\uv\python\cpython-3.13.7-windows-x86_64-none\python.exe
cpython-3.13.7-windows-x86_64-none                    C:\Users\freem\.local\bin\python3.13.exe
cpython-3.13.7-windows-x86_64-none                    <download available>
cpython-3.13.7+freethreaded-windows-x86_64-none       <download available>
cpython-3.12.11-windows-x86_64-none                   <download available>
cpython-3.11.13-windows-x86_64-none                   <download available>
cpython-3.10.18-windows-x86_64-none                   <download available>
cpython-3.9.23-windows-x86_64-none                    <download available>
cpython-3.8.20-windows-x86_64-none                    <download available>
pypy-3.11.13-windows-x86_64-none                      <download available>
pypy-3.10.16-windows-x86_64-none                      <download available>
pypy-3.9.19-windows-x86_64-none                       <download available>
pypy-3.8.16-windows-x86_64-none                       <download available>
graalpy-3.11.0-windows-x86_64-none                    <download available>
graalpy-3.10.0-windows-x86_64-none                    <download available>

Ubuntu

파이썬 3.13을 사용하도록 myproject 디렉토리에 프로젝트를 생성합니다.

$ uv init myproject --python 3.13
Initialized project `myproject` at `/home/webnautes/myproject`

생성된 디렉토리 내에 파일들이 생성됩니다.

$ cd my-project/

$ ls -al
합계 28
drwxrwxr-x  3 webnautes webnautes 4096  9월  4 17:43 .
drwxr-x--- 40 webnautes webnautes 4096  9월  4 17:43 ..
drwxrwxr-x  7 webnautes webnautes 4096  9월  4 17:43 .git
-rw-rw-r--  1 webnautes webnautes  109  9월  4 17:43 .gitignore
-rw-rw-r--  1 webnautes webnautes    5  9월  4 17:43 .python-version
-rw-rw-r--  1 webnautes webnautes    0  9월  4 17:43 README.md
-rw-rw-r--  1 webnautes webnautes   87  9월  4 17:43 main.py
-rw-rw-r--  1 webnautes webnautes  155  9월  4 17:43 pyproject.toml

우분투의 경우엔 파이썬이 설치되었습니다.

cpython-3.10.12-linux-x86_64-gnu 항목중 /usr/bin/python3.10와 /usr/bin/python3는 우분투에 기존에 설치되어 있는 파이썬이 인식된 것입니다.

새로 설치한 Python 3.13은 cpython-3.13.7-linux-x86_64-gnu 입니다. 경로가 /home/webnautes/.local/share/uv/python/ 이하로 되어 있습니다.

$ uv python list
cpython-3.14.0rc2-linux-x86_64-gnu                 <download available>
cpython-3.14.0rc2+freethreaded-linux-x86_64-gnu    <download available>
cpython-3.13.7-linux-x86_64-gnu                    /home/webnautes/.local/share/uv/python/cpython-3.13.7-linux-x86_64-gnu/bin/python3.13
cpython-3.13.7+freethreaded-linux-x86_64-gnu       <download available>
cpython-3.12.11-linux-x86_64-gnu                   <download available>
cpython-3.11.13-linux-x86_64-gnu                   <download available>
cpython-3.10.18-linux-x86_64-gnu                   <download available>
cpython-3.10.12-linux-x86_64-gnu                   /usr/bin/python3.10
cpython-3.10.12-linux-x86_64-gnu                   /usr/bin/python3 -> python3.10
cpython-3.9.23-linux-x86_64-gnu                    <download available>
cpython-3.8.20-linux-x86_64-gnu                    <download available>
pypy-3.11.13-linux-x86_64-gnu                      <download available>
pypy-3.10.16-linux-x86_64-gnu                      <download available>
pypy-3.9.19-linux-x86_64-gnu                       <download available>
pypy-3.8.16-linux-x86_64-gnu                       <download available>
graalpy-3.11.0-linux-x86_64-gnu                    <download available>
graalpy-3.10.0-linux-x86_64-gnu                    <download available>
graalpy-3.8.5-linux-x86_64-gnu                     <download available>

다음처럼 원하는 디렉터리에서 프로젝트를 초기화할 수 있습니다:

mkdir hello-world
cd hello-world
uv init

3. 가상환경 생성

가상 환경을 생성합니다.

uv venv

Windows

C:\Users\freem\myproject>uv venv
Using CPython 3.13.7
Creating virtual environment at: .venv
Activate with: .venv\Scripts\activate

Ubuntu

$ uv venv
Using CPython 3.13.7
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

4. 가상환경 활성화

가상환경을 활성화합니다. 프롬프트 맨 앞에 폴더 이름이 붙습니다..

Windows

.venv\Scripts\activate
C:\Users\freem\myproject>.venv\Scripts\activate   
실행후 화면이 지워집니다.

(myproject) C:\Users\freem\myproject>   

Ubuntu

source .venv/bin/activate
$ source .venv/bin/activate
(myproject)$ 

5.패키지 설치

5번부터는 공통적인 내용이라 윈도우에서 진행한 내용만 남겨둡니다.

프로젝트에 패키지를 추가하려면 다음 명령어를 사용합니다:

uv add 패키지명

opencv-python 패키지를 설치합니다.

(myproject) C:\Users\freem\myproject>uv add opencv-python
Resolved 3 packages in 176ms
Prepared 2 packages in 4.54s
Installed 2 packages in 192ms
 + numpy==2.2.6
 + opencv-python==4.12.0.88

설치된 패키지 목록을 확인합니다.

(myproject) C:\Users\freem\myproject>uv pip list
Package       Version
------------- ---------
numpy         2.2.6
opencv-python 4.12.0.88

pyproject.toml 파일에서도 확인이 가능합니다. 같이 설치되었던 numpy는 기록되어 있지 않습니다.

(myproject) C:\Users\freem\myproject>type pyproject.toml
[project]
name = "myproject"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "opencv-python>=4.12.0.88",
]

대안으로 다음 명령을 사용하여 패키지를 설치할 수도 있습니다.

uv pip install 패키지명

설치할 버전 제약 조건을 지정하거나 다른 출처를 지정할 수도 있습니다:

# 설치할 패키지의 버전을 지정합니다.
uv add 'requests==2.31.0'

# 패키지를 설치할 때 사용할 주소를 지정합니다. 
uv add git+https://github.com/psf/requests

6. 파이썬 코드 실행

파이썬 코드를 실행합니다. 프로젝트 생성시 현재 디렉토리에 main.py 파일이 생성되어 있습니다.

uv run main.py
(myproject) C:\Users\freem\myproject>uv run main.py
Hello from myproject!

main.py 파일을 다음처럼 수정합니다.

import cv2

print(cv2.__version__)

다시 실행해봅니다.

(myproject) C:\Users\freem\myproject>uv run main.py
4.12.0

7. 패키지 제거

패키지를 제거합니다.

uv remove 패키지명

opencv-python 패키지를 제거해봅니다.

(myproject) C:\Users\freem\myproject>uv remove opencv-python
Resolved 1 package in 11ms
Uninstalled 2 packages in 98ms
 - numpy==2.2.6
 - opencv-python==4.12.0.88

(myproject) C:\Users\freem\myproject>uv pip list

(myproject) C:\Users\freem\myproject>   

대안으로 다음 명령을 사용하여 패키지를 삭제제할 수도 있습니다.

uv pip uninstall 패키지명

8.가상환경 종료

가상환경을 종료합니다.

deactivate
(myproject) C:\Users\freem\myproject>deactivate
C:\Users\freem\myproject>

파이썬 스크립트에 인수를 제공할 수 있습니다:

example.py

import sys

print(" ".join(sys.argv[1:]))
uv run example.py test


uv run example.py hello world!

또한, 파이썬 스크립트를 표준 입력(stdin)에서 직접 읽을 수 있습니다:

echo 'print("hello world!")' | uv run -

프로젝트 구조

프로젝트는 uv가 프로젝트를 관리할 수 있게 하는 몇 가지 중요한 부분으로 구성됩니다. uv init으로 생성된 파일 외에도, uv는 프로젝트 명령어(예: uv run, uv sync, uv lock)를 처음 실행할 때 프로젝트 루트에 가상 환경과 uv.lock 파일을 생성합니다.

전체 프로젝트 구조는 다음과 같습니다:

.
├── .venv
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock

pyproject.toml

pyproject.toml 파일에는 프로젝트에 대한 메타 데이터가 포함되어 있습니다:

pyproject.toml

[project]
name = "hello-world"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
dependencies = []

이 파일은 종속성을 지정하고 프로젝트 설명이나 라이선스 같은 세부 정보를 기록하는 데 사용됩니다. 수동으로 편집하거나 uv adduv remove 같은 명령어를 사용해 터미널에서 프로젝트를 관리할 수 있습니다.

pyproject.toml 포맷을 시작하는 방법에 대한 자세한 내용은 공식 pyproject.toml 가이드를 참조하십시오.

이 파일은 또한 [tool.uv] 섹션에서 uv 설정 옵션을 지정하는 데 사용됩니다.

.python-version

.python-version 파일에는 프로젝트의 기본 Python 버전이 포함됩니다. 이 파일은 uv가 프로젝트의 가상 환경을 생성할 때 사용할 Python 버전을 지정합니다.

.venv

.venv 폴더에는 프로젝트의 가상 환경이 포함되어 있습니다. 이는 시스템의 나머지 부분과 격리된 Python 환경입니다. uv가 프로젝트의 종속성을 설치하는 위치입니다.

uv.lock

uv.lock은 프로젝트의 종속성에 대한 정확한 정보를 포함하는 크로스 플랫폼 락파일(lockfile)입니다. 프로젝트의 광범위한 요구 사항을 지정하는 데 사용되는 pyproject.toml과 달리, 락파일에는 프로젝트 환경에 설치된 정확한 확인된 버전이 포함됩니다. 이 파일은 버전 관리에 체크인해야 하며, 이를 통해 여러 머신에서 일관되고 재현 가능한 설치를 가능하게 합니다.

uv.lock은 사람이 읽을 수 있는 TOML 파일이지만 uv에 의해 관리되므로 수동으로 편집해서는 안 됩니다.

Subscribe to 멈춤보단 천천히라도

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe