간단히 살펴보는 uv 설치 및 사용방법( Windows, Ubuntu, macOS )

Windows, Ubuntu, macOS에서 uv를 설치하고 사용하는 방법을 다룹니다. uv는 Rust로 작성된 매우 빠른 Python 패키지 및 프로젝트 관리자입니다.

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

.

2025.3.20  최초작성 . uv를 간단히 사용해봤습니다.

2025.9.4 업데이트

2026.8.14 업데이트. uv 0.12부터 uv init의 기본 프로젝트 구조가 변경되어 전체 내용을 다시 작성했습니다. 

                     기존 프로젝트 방식을따라 진행하도록 수정했습니다.

.

이해를 돕기위해 영상으로도 제작했습니다.

.

1. uv 설치

macOS, Ubuntu

터미널에서 다음 명령을 실행합니다.  우분투의 경우엔 다음 단계를 진행하기전에 환경을 적용하기 위해 터미널을 다시 열어줘야 합니다. 실행과정이 동일하기 때문에 macOS의 실행결과만 남겨둡니다.

curl -LsSf https://astral.sh/uv/install.sh | sh

.

webnautes@webnautesui-MacBookAir ~ % curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.12.4 aarch64-apple-darwin
installing to /Users/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.12.4 (x86_64-pc-windows-msvc)installing to C:\Users\freem\.local\bin  uv.exe  uvx.exe  uvw.exeeverything's installed!

.

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 프로젝트이름 --python 파이썬버전  --no-package

.

uv 0.12(2026.7.28 릴리즈)부터 uv init의 기본 동작이 변경되었습니다. 이전에는 프로젝트 루트에 main.py 파일을 생성하는 단순한 구조였지만, 이제는 src/프로젝트이름/ 디렉토리에 소스 코드를 두는 패키지형 구조가 기본으로

생성됩니다. pyproject.toml에는 uv 자체 빌드 백엔드인 uv_build를 사용하는

[build-system] 항목과 실행 명령을 정의하는 [project.scripts] 항목이 추가됩니다.

.

본 문서에서는 이전 방식의 단순한 구조(루트에 main.py)를 사용하기 위해 --no-package 옵션을 추가하여 진행합니다.

.

Windows

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

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

.

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

C:\Users\freem>dir myproject C 드라이브의 볼륨에는 이름이 없습니다. 볼륨 일련 번호: 9651-526A
 C:\Users\freem\myproject 디렉터리
2026-08-14  오후 03:10    <DIR>          .2026-08-14  오후 03:10    <DIR>          ..2026-08-14  오후 03:10               109 .gitignore2026-08-14  오후 03:10                 5 .python-version2026-08-14  오후 03:10                87 main.py2026-08-14  오후 03:10               155 pyproject.toml2026-08-14  오후 03:10                 0 README.md               5개 파일                 356 바이트

.

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

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>

.

macOS, Ubuntu

파이썬 3.13을 사용하도록 myproject 디렉토리에 프로젝트를 생성합니다. 실행과정이 동일하기 때문에 macOS의 실행결과만 남겨둡니다.

uv init myproject --python 3.13  --no-package
webnautes@webnautesui-MacBookAir ~ % uv init myproject --python 3.13  --no-package

Initialized project `myproject` at `/Users/webnautes/myproject`

.

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

webnautes@webnautesui-MacBookAir ~ % ls -al myproject
total 24
drwxr-xr-x   8 webnautes  staff   256  8월 14 12:38 .
drwxr-xr-x+ 88 webnautes  staff  2816  8월 14 12:38 ..
drwxr-xr-x   9 webnautes  staff   288  8월 14 12:38 .git
-rw-r--r--   1 webnautes  staff   109  8월 14 12:38 .gitignore
-rw-r--r--   1 webnautes  staff     5  8월 14 12:38 .python-version
-rw-r--r--   1 webnautes  staff   357  8월 14 12:38 pyproject.toml
-rw-r--r--   1 webnautes  staff     0  8월 14 12:38 README.md
drwxr-xr-x   3 webnautes  staff    96  8월 14 12:38 src

.

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

mkdir hello-world
cd hello-world
uv init  --python 3.13  --no-package

.

3. 가상환경 생성

가상 환경을 생성합니다.

uv venv

.

앞에서 생성한 프로젝트 폴더로 이동하여 가상환경을 생성해야 합니다. 프로젝트 생성시 지정한 파이썬이 다운로드된후 가상환경이 생성됩니다. 해당 폴더에 .venv 폴더가 생성됩니다. 가상환경을 다시 생성하고 싶으면 .venv 폴더를 제거하면 됩니다. 

.

Windows

C:\Users\freem>cd myproject
C:\Users\freem\myproject>uv venvUsing CPython 3.13.15Creating virtual environment at: .venvActivate with: .venv\Scripts\activate

macOS / Ubuntu

실행과정이 동일하기 때문에 macOS의 실행결과만 남겨둡니다.

webnautes@webnautesui-MacBookAir ~ % cd myproject
webnautes@webnautesui-MacBookAir myproject % uv venv
Using CPython 3.13.15
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>   

.

macOS / Ubuntu

source .venv/bin/activate


실행과정이 동일하기 때문에 macOS의 실행결과만 남겨둡니다.

webnautes@webnautesui-MacBookAir myproject % source .venv/bin/activate
(myproject) webnautes@webnautesui-MacBookAir myproject % 

.

5.패키지 설치

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

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

uv add 패키지명

.

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

(myproject) webnautes@webnautesui-MacBookAir myproject % uv add opencv-python

Resolved 3 packages in 349ms
Prepared 2 packages in 5.16s
Installed 2 packages in 25ms
+ numpy==2.5.2
+ opencv-python==5.0.0.93

.

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

(myproject) webnautes@webnautesui-MacBookAir myproject % uv pip list
Package       Version
------------- --------
numpy         2.5.2
opencv-python 5.0.0.93

.

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

(myproject) webnautes@webnautesui-MacBookAir myproject % cat pyproject.toml
[project]name = "myproject"version = "0.1.0"description = "Add your description here"readme = "README.md"requires-python = ">=3.13"dependencies = [    "opencv-python>=5.0.0.93",]

.

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

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) webnautes@webnautesui-MacBookAir myproject % uv run main.py
Hello from myproject!

.

main.py 파일을 다음처럼 수정합니다. OpenCV 라이브러리의 버전을 출력하도록 합니다.

import cv2

print(cv2.__version__)

.

다시 실행해봅니다.

(myproject) webnautes@webnautesui-MacBookAir myproject % uv run main.py
5.0.0

.

참고로 --no-package 옵션 없이 생성한 기본 패키지형 프로젝트에서는 src\프로젝트이름_init_.py에 main 함수가 생성되며, uv run 프로젝트이름 명령으로 실행합니다.

.

7. 패키지 제거

패키지를 제거합니다.

uv remove 패키지명

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

(myproject) webnautes@webnautesui-MacBookAir myproject % uv remove opencv-python
Resolved 1 package in 15ms
Uninstalled 2 packages in 77ms
- numpy==2.5.2
- opencv-python==5.0.0.93

.

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

uv pip uninstall 패키지명

.

8.가상환경 비활성화

가상환경을 비활성화 합니다.

deactivate

.

프롬프트앞에 붙어있던 프로젝트 디렉토리 이름이 사라집니다.

(myproject) webnautes@webnautesui-MacBookAir myproject % deactivate
webnautes@webnautesui-MacBookAir myproject % 

.

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

main.py를 다음처럼 수정합니다. 

import sys

print(" ".join(sys.argv[1:]))

.

실행해봅니다. 받은 인수를 출력해줍니다.

webnautes@webnautesui-MacBookAir myproject % uv run main.py test   test

.

프로젝트 구조

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

.

--no-package 옵션으로 생성한 프로젝트의 전체 구조는 다음과 같습니다

.

참고로 uv 0.12부터 기본으로 생성되는 패키지형 프로젝트는 main.py 대신 src/프로젝트이름/init.py에 소스 코드가 위치하며, pyproject.toml에 [build-system]과 [project.scripts] 항목이 추가됩니다.

.

pyproject.toml

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

pyproject.toml

[project]name = "myproject"version = "0.1.0"description = "Add your description here"readme = "README.md"requires-python = ">=3.13"dependencies = []

.

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

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

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

.

.python-version

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

webnautes@webnautesui-MacBookAir myproject % cat .python-version
3.13

.

.venv

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

.

uv.lock

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

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

.

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다