๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Python

UV: ํ”„๋กœ์ ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ uv ์‚ฌ์šฉ๋ฒ•

by shulk 2025. 9. 11.

๐Ÿš€ uv ์‚ฌ์šฉ๋ฒ• ๊ฐ„๋‹จ ์ •๋ฆฌ

1. ๊ฐ€์ƒํ™˜๊ฒฝ ํ•ด์ œ

๊ธฐ์กด์— ํ™œ์„ฑํ™”๋œ .venv ๊ฐ€์ƒํ™˜๊ฒฝ์ด ์žˆ๋‹ค๋ฉด deactivate ๋ช…๋ น์–ด๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

Bash
 
deactivate

2. uv ์ดˆ๊ธฐ ์„ค์ •

uv init ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • .gitignore
  • .python-version
  • main.py
  • pyproject.toml
  • README.md

์ดํ›„ **uv run python**์„ ์‹คํ–‰ํ•˜๋ฉด .venv ๊ฐ€์ƒํ™˜๊ฒฝ ํด๋”์™€ uv.lock ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋ฉฐ ๊ฐ€์ƒํ™˜๊ฒฝ์ด ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค.


3. ํŒŒ์ด์ฌ ๋ฒ„์ „ ๋ณ€๊ฒฝ ๋ฒ„์ „ ๊ด€๋ฆฌ ๐Ÿ”ง

.python-version ํŒŒ์ผ์— ์›ํ•˜๋Š” ํŒŒ์ด์ฌ ๋ฒ„์ „์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: 3.11 -> 3.12)

# .python-version ํŒŒ์ผ ๋‚ด์šฉ
3.12

์ˆ˜์ • ํ›„ **uv run python**์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด uv๊ฐ€ ํ•ด๋‹น ๋ฒ„์ „์„ ๊ฐ์ง€ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•˜๊ณ  ์ ์šฉํ•ด ์ค๋‹ˆ๋‹ค.


4. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ (pyproject.toml & uv.lock)

uv๋Š” pyproject.toml ํŒŒ์ผ์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ํŒจํ‚ค์ง€ ์ถ”๊ฐ€: uv add [ํŒจํ‚ค์ง€๋ช…]
    • ์˜ˆ: uv add numpy
    • ๋ช…๋ น์–ด ์‹คํ–‰ ์‹œ, numpy๊ฐ€ ๊ฐ€์ƒํ™˜๊ฒฝ์— ์„ค์น˜๋˜๊ณ  pyproject.toml๊ณผ uv.lock ํŒŒ์ผ์— ํ•ด๋‹น ์˜์กด์„ฑ์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
  • ํŒจํ‚ค์ง€ ์‚ญ์ œ: uv remove [ํŒจํ‚ค์ง€๋ช…]
    • ์˜ˆ: uv remove numpy
    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์‚ญ์ œ๋˜๊ณ , ๊ด€๋ จ ํŒŒ์ผ์—์„œ๋„ ๋‚ด์šฉ์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

pyproject.toml์€ ์„ค์น˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ๊ณ , uv.lock์€ ๋ชจ๋“  ์˜์กด์„ฑ์— ๋Œ€ํ•œ ์ƒ์„ธ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


5. ํ˜‘์—… ๋ฐ ํ™˜๊ฒฝ ๋™๊ธฐํ™” ๐Ÿค

.venv ํด๋”๋Š” ์šฉ๋Ÿ‰์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต .gitignore์— ์ถ”๊ฐ€ํ•˜์—ฌ Git ์ €์žฅ์†Œ์— ์˜ฌ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํŒ€์›์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํด๋ก ํ•œ ํ›„, ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ผ์ผ์ด ์„ค์น˜ํ•  ํ•„์š” ์—†์ด uv sync ๋ช…๋ น์–ด ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•˜๋ฉด pyproject.toml๊ณผ uv.lock ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ์˜์กด์„ฑ์ด ์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

โœจ ๊ฟ€ํŒ: ์‚ฌ์‹ค uv run ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ uv sync๊ฐ€ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ uv run๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค!


6. uv add vs uv pip install

๋ช…๋ น์–ด pyproject.toml ๊ธฐ๋ก ์„ค๋ช…
uv add [ํŒจํ‚ค์ง€๋ช…] O (๊ธฐ๋ก๋จ) ํ”„๋กœ์ ํŠธ์˜ ๊ณต์‹ ์˜์กด์„ฑ์œผ๋กœ ์ถ”๊ฐ€. ํ˜‘์—… ์‹œ ๊ณต์œ ๋จ.
uv pip install [ํŒจํ‚ค์ง€๋ช…] X (๊ธฐ๋ก ์•ˆ๋จ) ๊ฐ€์ƒํ™˜๊ฒฝ(.venv)์— ์ž„์‹œ๋กœ ์„ค์น˜๋งŒ ํ•  ๋•Œ ์‚ฌ์šฉ. ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ ํŒŒ์ผ์—๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ.
Sheets๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

๊ฒฐ๋ก : ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ผญ **uv add**๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.