]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
๐ŸŒ Update Korean translation for `docs/ko/docs/virtual-environments.md` (#13630)
authorsungchan Yeo <sungchan254@naver.com>
Fri, 30 May 2025 13:10:41 +0000 (22:10 +0900)
committerGitHub <noreply@github.com>
Fri, 30 May 2025 13:10:41 +0000 (15:10 +0200)
docs/ko/docs/virtual-environments.md [new file with mode: 0644]

diff --git a/docs/ko/docs/virtual-environments.md b/docs/ko/docs/virtual-environments.md
new file mode 100644 (file)
index 0000000..0d10c32
--- /dev/null
@@ -0,0 +1,846 @@
+# ๊ฐ€์ƒ ํ™˜๊ฒฝ
+
+Python ํ”„๋กœ์ ํŠธ๋ฅผ ์ž‘์—…ํ•  ๋•Œ๋Š” **๊ฐ€์ƒ ํ™˜๊ฒฝ** (๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๋„๊ตฌ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์ ํŠธ ๋งˆ๋‹ค ์„ค์น˜ํ•˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+/// info | ์ •๋ณด
+
+์ด๋ฏธ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด, ์ด ์„น์…˜์€ ๊ฑด๋„ˆ ๋›ฐ์–ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๐Ÿค“
+
+///
+
+/// tip | ํŒ
+
+**๊ฐ€์ƒ ํ™˜๊ฒฝ(Virtual Environment)** ์€ **ํ™˜๊ฒฝ ๋ณ€์ˆ˜(Environment Variable)** ์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
+
+**ํ™˜๊ฒฝ ๋ณ€์ˆ˜**๋Š” ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
+
+**๊ฐ€์ƒ ํ™˜๊ฒฝ**์€ ๋ช‡๋ช‡ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋œ ํ•˜๋‚˜์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.
+
+///
+
+/// info | ์ •๋ณด
+
+์ด ํŽ˜์ด์ง€์—์„œ๋Š” **๊ฐ€์ƒ ํ™˜๊ฒฝ**์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ ์ž‘๋™ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
+
+๋งŒ์•ฝ **๋ชจ๋“  ๊ฒƒ์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋„๊ตฌ** (Python ์„ค์น˜๊นŒ์ง€ ํฌํ•จ)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">uv</a>๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.
+
+///
+
+## ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
+
+๋จผ์ €, ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+๋ณดํ†ต ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— `code`๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
+
+<div class="termy">
+
+```console
+// ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
+$ cd
+// ๋ชจ๋“  ์ฝ”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ
+$ mkdir code
+// code ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
+$ cd code
+// ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ
+$ mkdir awesome-project
+// ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
+$ cd awesome-project
+```
+
+</div>
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ
+
+Python ํ”„๋กœ์ ํŠธ๋ฅผ **์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ**, ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ **<abbr title="๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค๋„ ์žˆ์ง€๋งŒ, ์ด๊ฑด ๊ฐ„๋‹จํ•œ ๊ฐ€์ด๋“œ๋ผ์ธ์ž…๋‹ˆ๋‹ค">ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€</abbr>**์— ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+/// tip | ํŒ
+
+์ด ์ž‘์—…์€ **ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ ์„ค์ •ํ•  ๋•Œ ํ•œ๋ฒˆ๋งŒ** ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์ž‘์—…ํ•  ๋•Œ ๋ฐ˜๋ณตํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
+
+///
+
+//// tab | `venv`
+
+Python ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋œ venv ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+<div class="termy">
+
+```console
+$ python -m venv .venv
+```
+
+</div>
+
+/// details | ๋ช…๋ น์–ด ์ƒ์„ธ ์„ค๋ช…
+
+* `python`: `python` ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+* `-m`: ํŠน์ • ๋ชจ๋“ˆ์„ ์Šคํฌ๋ฆฝํŠธ์ฒ˜๋Ÿผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ๋ชจ๋“ˆ์„ ๋ฐ”๋กœ ๋’ค์— ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
+* `venv`: Python ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋œ `venv` ๋ชจ๋“ˆ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+* `.venv`: ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ `.venv` ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+///
+
+////
+
+//// tab | `uv`
+
+<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a>๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด, uv๋ฅผ ํ†ตํ•ด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+<div class="termy">
+
+```console
+$ uv venv
+```
+
+</div>
+
+/// tip | ํŒ
+
+`uv`๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ `.venv` ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+๋ณ„๋„๋กœ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์„ ์ถ”๊ฐ€ ์ธ์ž๋กœ ๋„˜๊ฒจ ์ฃผ๋ฉด ๊ฒฝ๋กœ๋ฅผ ์ง€์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+///
+
+////
+
+ํ•ด๋‹น ๋ช…๋ น์–ด๋Š” `.venv` ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒˆ๋กœ์šด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
+
+/// details | `.venv` ๋˜๋Š” ๋‹ค๋ฅธ ์ด๋ฆ„
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ด€๋ก€์ ์œผ๋กœ `.venv` ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+///
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ ํ™œ์„ฑํ™”
+
+์ดํ›„ ์‹คํ–‰ํ•˜๋Š” Python ๋ช…๋ น์–ด์™€ ํŒจํ‚ค์ง€ ์„ค์น˜๊ฐ€ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋”ฐ๋ฅด๋„๋ก, ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.
+
+/// tip | ํŒ
+
+**ํ„ฐ๋ฏธ๋„์„ ์ƒˆ๋กœ ์—ด๊ณ ** ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ๋Š”, **ํ•ญ์ƒ ์ด ์ž‘์—…์„** ํ•ด์ฃผ์„ธ์š”.
+
+///
+
+//// tab | Linux, macOS
+
+<div class="termy">
+
+```console
+$ source .venv/bin/activate
+```
+
+</div>
+
+////
+
+//// tab | Windows PowerShell
+
+<div class="termy">
+
+```console
+$ .venv\Scripts\Activate.ps1
+```
+
+</div>
+
+////
+
+//// tab | Windows Bash
+
+Windows์—์„œ Bash(์˜ˆ: <a href="https://gitforwindows.org/" class="external-link" target="_blank">Git Bash</a>)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:
+
+<div class="termy">
+
+```console
+$ source .venv/Scripts/activate
+```
+
+</div>
+
+////
+
+/// tip | ํŒ
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋งˆ๋‹ค, ํ•ด๋‹น ํ™˜๊ฒฝ์„ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.
+
+์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ด๋‹น ํŒจํ‚ค์ง€๋กœ ์„ค์น˜๋œ **ํ„ฐ๋ฏธ๋„(<abbr title="command line interface">CLI</abbr>) ํ”„๋กœ๊ทธ๋žจ**์„ ์‚ฌ์šฉํ•  ๋•Œ, ์ „์—ญ์— ์„ค์น˜๋œ ๋‹ค๋ฅธ ๋ฒ„์ „์ด ์•„๋‹ˆ๋ผ, ๊ฐ€์ƒ ํ™˜๊ฒฝ ์•ˆ์— ์„ค์น˜๋œ ์ •ํ™•ํ•œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+///
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™” ์—ฌ๋ถ€ ํ™•์ธ
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™”๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (์ด์ „ ๋ช…๋ น์–ด๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค).
+
+/// tip | ํŒ
+
+์ด ๋‹จ๊ณ„๋Š” **์„ ํƒ ์‚ฌํ•ญ**์ด์ง€๋งŒ, ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์˜๋„ํ•œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™” ๋˜์—ˆ๋Š” ์ง€ **ํ™•์ธ**ํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
+
+///
+
+//// tab | Linux, macOS, Windows Bash
+
+<div class="termy">
+
+```console
+$ which python
+
+/home/user/code/awesome-project/.venv/bin/python
+```
+
+</div>
+
+`python` ์œ„์น˜๊ฐ€ ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€(์ด ์˜ˆ์‹œ์—์„œ๋Š” `awesome-project`)์˜ `.venv/bin/python` ๊ฒฝ๋กœ๋กœ ํ‘œ์‹œ๋œ๋‹ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค. ๐ŸŽ‰
+
+////
+
+//// tab | Windows PowerShell
+
+<div class="termy">
+
+```console
+$ Get-Command python
+
+C:\Users\user\code\awesome-project\.venv\Scripts\python
+```
+
+</div>
+
+`python` ์œ„์น˜๊ฐ€ ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€(์ด ์˜ˆ์‹œ์—์„œ๋Š” `awesome-project`)์˜ `.venv\bin\python` ๊ฒฝ๋กœ๋กœ ํ‘œ์‹œ๋œ๋‹ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค. ๐ŸŽ‰
+
+////
+
+## pip ์—…๊ทธ๋ ˆ์ด๋“œ
+
+/// tip | ํŒ
+
+<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a>๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, `pip` ๋Œ€์‹  `uv`๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ `pip`์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Ž
+
+///
+
+`pip`์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ (Python ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค), **์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ**ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
+
+ํŒจํ‚ค์ง€ ์„ค์น˜ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค์–‘ํ•˜๊ณ  ํŠน์ดํ•œ ์—๋Ÿฌ๋“ค์€ `pip` ์—…๊ทธ๋ ˆ์ด๋“œ๋กœ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
+
+/// tip | ํŒ
+
+์ด ์ž‘์—…์€ ๋ณดํ†ต ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•œ **์งํ›„ ํ•œ ๋ฒˆ๋งŒ** ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+///
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•œ ํ›„(์•ž์„œ ์„ค๋ช…ํ•œ ๋ช…๋ น์–ด ์‚ฌ์šฉ), ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:
+
+<div class="termy">
+
+```console
+$ python -m pip install --upgrade pip
+
+---> 100%
+```
+
+</div>
+
+## `.gitignore` ์ถ”๊ฐ€ํ•˜๊ธฐ
+
+**Git**์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด (์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค), `.gitignore` ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์„œ `.venv` ๋””๋ ‰ํ„ฐ๋ฆฌ ์ „์ฒด๋ฅผ Git์—์„œ ์ œ์™ธํ•˜์„ธ์š”.
+
+/// tip | ํŒ
+
+<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a>๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ–ˆ๋‹ค๋ฉด, ์ด๋ฏธ ์ด ์ž‘์—…์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด ๋‹จ๊ณ„๋Š” ๊ฑด๋„ˆ๋›ฐ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ˜Ž
+
+///
+
+/// tip | ํŒ
+
+์ด ์ž‘์—…๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•œ **์งํ›„ ํ•œ ๋ฒˆ๋งŒ** ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+///
+
+<div class="termy">
+
+```console
+$ echo "*" > .venv/.gitignore
+```
+
+</div>
+
+/// details | ๋ช…๋ น์–ด ์ƒ์„ธ ์„ค๋ช…
+
+* `echo "*"`: ํ„ฐ๋ฏธ๋„์— `*` ํ…์ŠคํŠธ๋ฅผ "์ถœ๋ ฅ"ํ•ฉ๋‹ˆ๋‹ค (๋‹ค์Œ ์„ค๋ช…์—์„œ ์กฐ๊ธˆ ๋ฐ”๋€๋‹ˆ๋‹ค)
+* `>`: ์™ผ์ชฝ ๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ ๋‚ด์šฉ์„ ํ„ฐ๋ฏธ๋„์— ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ , ์˜ค๋ฅธ์ชฝ์— ์ง€์ •๋œ ํŒŒ์ผ๋กœ **๊ธฐ๋ก(write)** ํ•˜๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
+* `.gitignore`: ์ถœ๋ ฅ๋œ ํ…์ŠคํŠธ๊ฐ€ ๊ธฐ๋ก๋  ํŒŒ์ผ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
+
+๊ทธ๋ฆฌ๊ณ  Git์—์„œ `*`๋Š” "๋ชจ๋“  ๊ฒƒ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ `.venv` ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๋ฌด์‹œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ๊ฐ€์ง„ `.gitignore` ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:
+
+
+```gitignore
+*
+```
+
+///
+
+## ํŒจํ‚ค์ง€ ์„ค์น˜
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•œ ํ›„, ๊ทธ ์•ˆ์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+/// tip | ํŒ
+
+ํ”„๋กœ์ ํŠธ์—์„œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๋Š” ์ด ์ž‘์—…์„ **ํ•œ ๋ฒˆ๋งŒ** ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+๋งŒ์•ฝ ํŠน์ • ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์ƒ๊ธฐ๋ฉด **๋‹ค์‹œ ์ด ์ž‘์—…์„ ๋ฐ˜๋ณต**ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+///
+
+### ํŒจํ‚ค์ง€ ์ง์ ‘ ์„ค์น˜
+
+๊ธ‰ํ•˜๊ฒŒ ์ž‘์—…ํ•˜๊ฑฐ๋‚˜, ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ๋”ฐ๋กœ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ, ํŒจํ‚ค์ง€๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+/// tip | ํŒ
+
+ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ํŒŒ์ผ์— ์ •๋ฆฌํ•ด๋‘๋Š” ๊ฒƒ(์˜ˆ: `requirements.txt` ๋˜๋Š” `pyproject.toml`)์€ (๋งค์šฐ) ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.
+
+///
+
+//// tab | `pip`
+
+<div class="termy">
+
+```console
+$ pip install "fastapi[standard]"
+
+---> 100%
+```
+
+</div>
+
+////
+
+//// tab | `uv`
+
+<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a>๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:
+
+<div class="termy">
+
+```console
+$ uv pip install "fastapi[standard]"
+---> 100%
+```
+
+</div>
+
+////
+
+### `requirements.txt`์—์„œ ์„ค์น˜
+
+`requirements.txt` ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด, ๊ทธ ์•ˆ์— ๋ช…์‹œ๋œ ํŒจํ‚ค์ง€๋“ค์„ ํ•œ ๋ฒˆ์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+//// tab | `pip`
+
+<div class="termy">
+
+```console
+$ pip install -r requirements.txt
+---> 100%
+```
+
+</div>
+
+////
+
+//// tab | `uv`
+
+<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a>๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:
+
+<div class="termy">
+
+```console
+$ uv pip install -r requirements.txt
+---> 100%
+```
+
+</div>
+
+////
+
+/// details | `requirements.txt`
+
+๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•œ `requirements.txt`์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:
+
+```requirements.txt
+fastapi[standard]==0.113.0
+pydantic==2.8.0
+```
+
+///
+
+## ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•œ ํ›„์—๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ํ•ด๋‹น ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์„ค์น˜๋œ Python๊ณผ ํŒจํ‚ค์ง€๋“ค์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
+
+<div class="termy">
+
+```console
+$ python main.py
+
+Hello World
+```
+
+</div>
+
+## ์—๋””ํ„ฐ ์„ค์ •
+
+์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์•ž์„œ ๋งŒ๋“  ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. (๋Œ€๋ถ€๋ถ„์˜ ์—๋””ํ„ฐ๋Š” ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.)
+์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์ด๋‚˜ ์ฝ”๋“œ ๋‚ด ์˜ค๋ฅ˜ ํ‘œ์‹œ ๊ธฐ๋Šฅ์„ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์˜ˆ์‹œ:
+
+* <a href="https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment" class="external-link" target="_blank">VS Code</a>
+* <a href="https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html" class="external-link" target="_blank">PyCharm</a>
+
+/// tip | ํŒ
+
+์ด ์„ค์ •์€ ๋ณดํ†ต ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ **์ฒ˜์Œ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ํ•œ ๋ฒˆ๋งŒ** ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
+
+///
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋น„ํ™œ์„ฑํ™”
+
+ํ”„๋กœ์ ํŠธ ์ž‘์—…์ด ๋๋‚ฌ๋‹ค๋ฉด, ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ **๋น„ํ™œ์„ฑํ™”**ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+<div class="termy">
+
+```console
+$ deactivate
+```
+
+</div>
+
+์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ดํ›„์— `python` ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ Python์ด๋‚˜ ๊ทธ ์•ˆ์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+## ์ด์ œ ์ž‘์—…ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
+
+์ด์ œ ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
+
+
+/// tip | ํŒ
+
+์œ„ ๋‚ด์šฉ์„ ๋” ๊นŠ์ด ์ดํ•ดํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”?
+
+๊ทธ๋ ‡๋‹ค๋ฉด ๊ณ„์† ์ฝ์–ด ์ฃผ์„ธ์š”. ๐Ÿ‘‡๐Ÿค“
+
+///
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€
+
+FastAPI๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € <a href="https://www.python.org/" class="external-link" target="_blank">Python</a>์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ทธ ํ›„์—๋Š” FastAPI์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  **๊ธฐํƒ€ ํŒจํ‚ค์ง€๋“ค**์„ **์„ค์น˜**ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ ๋ณดํ†ต Python์— ๊ธฐ๋ณธ ํฌํ•จ๋œ `pip` ๋ช…๋ น์–ด(๋˜๋Š” ์œ ์‚ฌํ•œ ๋„๊ตฌ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+ํ•˜์ง€๋งŒ `pip`์„ ๊ทธ๋ƒฅ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ฉด, ํ•ด๋‹น ํŒจํ‚ค์ง€๋“ค์€ **์ „์—ญ Python ํ™˜๊ฒฝ**(์‹œ์Šคํ…œ ์ „์ฒด์— ์„ค์น˜๋œ Python)์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.
+
+### ๋ฌธ์ œ์ 
+
+๊ทธ๋ ‡๋‹ค๋ฉด, ์ „์—ญ Python ํ™˜๊ฒฝ์— ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ• ๊นŒ์š”?
+
+์–ด๋А ์‹œ์ ์ด ๋˜๋ฉด, **์„œ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋“ค**์— ์˜์กดํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋“ค ์ค‘ ์ผ๋ถ€๋Š” **๊ฐ™์€ ํŒจํ‚ค์ง€์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „**์„ ํ•„์š”๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ฑ
+
+์˜ˆ๋ฅผ ๋“ค์–ด, `๋งˆ๋ฒ•์‚ฌ์˜ ๋Œ(philosophers-stone)` ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์€ `ํ•ด๋ฆฌ ํฌํ„ฐ(harry)`๋ผ๋Š” ํŒจํ‚ค์ง€์˜ `v1` ๋ฒ„์ „์„ **์˜์กด**ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ `harry`๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
+
+```mermaid
+flowchart LR
+    stone(philosophers-stone) -->|requires| harry-1[harry v1]
+```
+
+๊ทธ๋Ÿฐ๋ฐ ๋‚˜์ค‘์— `์•„์ฆˆ์นด๋ฐ˜์˜ ์ฃ„์ˆ˜(prisoner-of-azkaban)`์ด๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๊ณ , ์ด ํ”„๋กœ์ ํŠธ๋„ ์—ญ์‹œ `harry` ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ํ”„๋กœ์ ํŠธ๋Š” `harry`์˜ `v3` ๋ฒ„์ „์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
+
+```mermaid
+flowchart LR
+    azkaban(prisoner-of-azkaban) --> |requires| harry-3[harry v3]
+```
+
+ํ•˜์ง€๋งŒ ์ด์ œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ๋กœ์ปฌ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋Œ€์‹ ์— ์ „์—ญ ํ™˜๊ฒฝ์— ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋ฉด, ์–ด๋–ค ๋ฒ„์ „์˜ `harry`๋ฅผ ์„ค์น˜ํ• ์ง€๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+
+์˜ˆ๋ฅผ ๋“ค์–ด, `๋งˆ๋ฒ•์‚ฌ์˜ ๋Œ(philosophers-stone)`์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋จผ์ € `harry` `v1` ๋ฒ„์ „์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์น˜ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
+
+<div class="termy">
+
+```console
+$ pip install "harry==1"
+```
+
+</div>
+
+๊ทธ๋Ÿฌ๋ฉด ๊ฒฐ๊ตญ ์ „์—ญ Python ํ™˜๊ฒฝ์—๋Š” `harry` `v1`๋ฒ„์ „์ด ์„ค์น˜๋œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
+
+```mermaid
+flowchart LR
+    subgraph global[global env]
+        harry-1[harry v1]
+    end
+    subgraph stone-project[philosophers-stone project]
+        stone(philosophers-stone) -->|requires| harry-1
+    end
+```
+
+ํ•˜์ง€๋งŒ ์ด์ œ `์•„์ฆˆ์นด๋ฐ˜์˜ ์ฃ„์ˆ˜(prisoner-of-azkaban)`์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, `harry` `v1`๋ฒ„์ „์„ ์ œ๊ฑฐํ•˜๊ณ  `harry` `v3`๋ฒ„์ „์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋˜๋Š” ๋‹จ์ˆœํžˆ `v3`๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๊ธฐ์กด์˜ `v1`๋ฒ„์ „์ด ์ž๋™์œผ๋กœ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.)
+
+<div class="termy">
+
+```console
+$ pip install "harry==3"
+```
+
+</div>
+
+๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด์ œ ์ „์—ญ Python ํ™˜๊ฒฝ์—๋Š” `harry` `v3`๋ฒ„์ „์ด ์„ค์น˜๋œ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
+
+๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ `๋งˆ๋ฒ•์‚ฌ์˜ ๋Œ(philosophers-stone)`์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด, **์ž‘๋™ํ•˜์ง€** ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด ํ”„๋กœ๊ทธ๋žจ์€ `harry` `v1`๋ฒ„์ „์„ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
+
+```mermaid
+flowchart LR
+    subgraph global[global env]
+        harry-1[<strike>harry v1</strike>]
+        style harry-1 fill:#ccc,stroke-dasharray: 5 5
+        harry-3[harry v3]
+    end
+    subgraph stone-project[philosophers-stone project]
+        stone(philosophers-stone) -.-x|โ›”๏ธ| harry-1
+    end
+    subgraph azkaban-project[prisoner-of-azkaban project]
+        azkaban(prisoner-of-azkaban) --> |requires| harry-3
+    end
+```
+
+/// tip | ํŒ
+
+Python ํŒจํ‚ค์ง€๋“ค์€ **์ƒˆ ๋ฒ„์ „**์—์„œ **ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ(breaking changes)**๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ตœ๋Œ€ํ•œ ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์ž‘์—…ํ•˜๋ ค๋ฉด, ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด์„œ ์ƒˆ ๋ฒ„์ „์„ ์˜๋„์ ์œผ๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
+
+///
+
+์ด์ œ, ์ด๋Ÿฐ ์ผ์ด ์—ฌ๋Ÿฌ๋ถ„์˜ **๋ชจ๋“  ํ”„๋กœ์ ํŠธ**๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” **์ˆ˜๋งŽ์€ ํŒจํ‚ค์ง€๋“ค**์—์„œ ๋™์‹œ์— ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ณด์„ธ์š”. ์ด๋Š” ๋งค์šฐ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šฐ๋ฉฐ, ๊ฒฐ๊ตญ **์„œ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „**์˜ ํŒจํ‚ค์ง€๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ณ , ๊ทธ๋กœ ์ธํ•ด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์™œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+๋˜ํ•œ ์‚ฌ์šฉํ•˜๋Š” ์šด์˜์ฒด์ œ(Linux, Windows, macOS ๋“ฑ)์— ๋”ฐ๋ผ Python์ด **๋ฏธ๋ฆฌ ์„ค์น˜๋˜์–ด ์žˆ์„ ์ˆ˜๋„** ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์šด์˜์ฒด์ œ์˜ ๋™์ž‘์— ํ•„์š”ํ•œ ํŠน์ • ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€๋“ค์ด ํ•จ๊ป˜ ์„ค์น˜๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒํƒœ์—์„œ ์ „์—ญ Python ํ™˜๊ฒฝ์— ์ž„์˜์˜ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด, ์šด์˜์ฒด์ œ์— ํฌํ•จ๋œ ํ”„๋กœ๊ทธ๋žจ ์ผ๋ถ€๊ฐ€ **๊นจ์งˆ ์œ„ํ—˜**๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+## ํŒจํ‚ค์ง€๋“ค์€ ์–ด๋””์— ์„ค์น˜๋˜๋Š”๊ฐ€
+
+Python์„ ์„ค์น˜ํ•˜๋ฉด, ์ปดํ“จํ„ฐ์— ์—ฌ๋Ÿฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
+
+์ด ์ค‘ ์ผ๋ถ€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ๋ณด๊ด€ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
+
+์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด:
+
+<div class="termy">
+
+```console
+// ์ง€๊ธˆ ์‹คํ–‰ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค, ๊ทธ๋ƒฅ ์˜ˆ์ œ์ผ ๋ฟ์ด์—์š” ๐Ÿค“
+$ pip install "fastapi[standard]"
+---> 100%
+```
+
+</div>
+
+ํ•ด๋‹น ๋ช…๋ น์–ด๋Š” FastAPI ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•œ ์••์ถ• ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ๋ณดํ†ต <a href="https://pypi.org/project/fastapi/" class="external-link" target="_blank">PyPI</a>์—์„œ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.
+
+๋˜ํ•œ FastAPI๊ฐ€ ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋“ค๋„ ํ•จ๊ป˜ **๋‹ค์šด๋กœ๋“œ**๋ฉ๋‹ˆ๋‹ค.
+
+๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ชจ๋“  ํŒŒ์ผ๋“ค์„ **์••์ถ• ํ•ด์ œ**ํ•œ ๋’ค, ์ปดํ“จํ„ฐ์˜ ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
+
+๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ํŒŒ์ผ๋“ค์€ Python์ด ์„ค์น˜๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ, ์ฆ‰ **์ „์—ญ ํ™˜๊ฒฝ**์— ๋‚ด์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด๋ž€
+
+์ „์—ญ ํ™˜๊ฒฝ์— ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€, ์ž‘์—…ํ•˜๋Š” **๊ฐ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๊ฐ€์ƒ ํ™˜๊ฒฝ**์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์€ ์ „์—ญ ํ™˜๊ฒฝ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ํ•˜๋‚˜์˜ **๋””๋ ‰ํ„ฐ๋ฆฌ**์ด๋ฉฐ, ๊ทธ ์•ˆ์— ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ ํ”„๋กœ์ ํŠธ๋Š” ์ž์ฒด์ ์ธ ๊ฐ€์ƒ ํ™˜๊ฒฝ(`.venv` ๋””๋ ‰ํ„ฐ๋ฆฌ)์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉฐ, ๊ทธ ์•ˆ์— ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ์ „์šฉ ํŒจํ‚ค์ง€๋“ค์„ ๋ณด์œ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+
+```mermaid
+flowchart TB
+    subgraph stone-project[philosophers-stone project]
+        stone(philosophers-stone) --->|requires| harry-1
+        subgraph venv1[.venv]
+            harry-1[harry v1]
+        end
+    end
+    subgraph azkaban-project[prisoner-of-azkaban project]
+        azkaban(prisoner-of-azkaban) --->|requires| harry-3
+        subgraph venv2[.venv]
+            harry-3[harry v3]
+        end
+    end
+    stone-project ~~~ azkaban-project
+```
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ ํ™œ์„ฑํ™” ์˜๋ฏธ
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์€, ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค:
+
+//// tab | Linux, macOS
+
+<div class="termy">
+
+```console
+$ source .venv/bin/activate
+```
+
+</div>
+
+////
+
+//// tab | Windows PowerShell
+
+<div class="termy">
+
+```console
+$ .venv\Scripts\Activate.ps1
+```
+
+</div>
+
+////
+
+//// tab | Windows Bash
+
+Windows์—์„œ Bash(์˜ˆ: <a href="https://gitforwindows.org/" class="external-link" target="_blank">Git Bash</a>)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:
+
+<div class="termy">
+
+```console
+$ source .venv/Scripts/activate
+```
+
+</div>
+
+////
+
+์ด ๋ช…๋ น์–ด๋Š” ์ดํ›„์— ์‹คํ–‰๋  ๋ช…๋ น์–ด์—์„œ ์‚ฌ์šฉ๋  [ํ™˜๊ฒฝ ๋ณ€์ˆ˜](environment-variables.md){.internal-link target=_blank} ๋ช‡ ๊ฐœ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
+
+์ด ๋ณ€์ˆ˜๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ `PATH` ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
+
+/// tip | ํŒ
+
+`PATH` ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๋” ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด [ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฌธ์„œ์˜ PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„น์…˜](environment-variables.md#path-environment-variable){.internal-link target=_blank}์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
+
+///
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด, ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ ๊ฒฝ๋กœ์ธ `.venv/bin` (Linux์™€ macOS) ๋˜๋Š” `.venv\Scripts`(Windows)๋ฅผ `PATH` ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
+
+์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์ „์˜ `PATH` ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค:
+
+//// tab | Linux, macOS
+
+```plaintext
+/usr/bin:/bin:/usr/sbin:/sbin
+```
+
+์‹œ์Šคํ…œ์€ ๋‹ค์Œ ๊ฒฝ๋กœ๋“ค์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:
+
+* `/usr/bin`
+* `/bin`
+* `/usr/sbin`
+* `/sbin`
+
+////
+
+//// tab | Windows
+
+```plaintext
+C:\Windows\System32
+```
+
+์‹œ์Šคํ…œ์€ ๋‹ค์Œ ๊ฒฝ๋กœ๋“ค์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:
+
+* `C:\Windows\System32`
+
+////
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•œ ํ›„์—๋Š”, `PATH` ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค:
+
+//// tab | Linux, macOS
+
+```plaintext
+/home/user/code/awesome-project/.venv/bin:/usr/bin:/bin:/usr/sbin:/sbin
+```
+
+์‹œ์Šคํ…œ์€ ๊ฐ€์žฅ ๋จผ์ € ๋‹ค์Œ ๊ฒฝ๋กœ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:
+
+```plaintext
+/home/user/code/awesome-project/.venv/bin
+```
+
+๊ทธ ํ›„์— ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋“ค์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
+
+๋”ฐ๋ผ์„œ ํ„ฐ๋ฏธ๋„์— `python`์„ ์ž…๋ ฅํ•˜๋ฉด, ์‹œ์Šคํ…œ์€ ๋‹ค์Œ ์œ„์น˜์— ์žˆ๋Š” Python ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:
+
+```plaintext
+/home/user/code/awesome-project/.venv/bin/python
+```
+
+๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น Python์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+////
+
+//// tab | Windows
+
+```plaintext
+C:\Users\user\code\awesome-project\.venv\Scripts;C:\Windows\System32
+```
+
+์‹œ์Šคํ…œ์€ ๊ฐ€์žฅ ๋จผ์ € ๋‹ค์Œ ๊ฒฝ๋กœ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:
+
+```plaintext
+C:\Users\user\code\awesome-project\.venv\Scripts
+```
+
+๊ทธ ํ›„์— ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋“ค์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
+
+๋”ฐ๋ผ์„œ ํ„ฐ๋ฏธ๋„์— `python`์„ ์ž…๋ ฅํ•˜๋ฉด, ์‹œ์Šคํ…œ์€ ๋‹ค์Œ ๊ฒฝ๋กœ์— ์žˆ๋Š” Python ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:
+
+```plaintext
+C:\Users\user\code\awesome-project\.venv\Scripts\python
+```
+
+๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น Python์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+////
+
+์ค‘์š”ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋Š”, ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ ๊ฒฝ๋กœ๊ฐ€ `PATH` ๋ณ€์ˆ˜์˜ ๊ฐ€์žฅ **์•ž**์— ์ถ”๊ฐ€๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ Python๋“ค๋ณด๋‹ค **๋จผ์ €** ์ด ๊ฒฝ๋กœ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ„ฐ๋ฏธ๋„์—์„œ `python`์„ ์‹คํ–‰ํ•˜๋ฉด, ์ „์—ญ ํ™˜๊ฒฝ์˜ Python์ด ์•„๋‹Œ **๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š”** Python์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. (์˜ˆ: ์ „์—ญ ํ™˜๊ฒฝ์— ์„ค์น˜๋œ `python`์ด ์žˆ๋”๋ผ๋„ ๊ทธ๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.)
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ด ์™ธ์—๋„ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์ด ๋ณ€๊ฒฝ๋˜์ง€๋งŒ, ์ด๋Š” ๊ทธ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ณ€ํ™” ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ ํ™•์ธํ•˜๊ธฐ
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™” ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด, ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
+
+//// tab | Linux, macOS, Windows Bash
+
+<div class="termy">
+
+```console
+$ which python
+
+/home/user/code/awesome-project/.venv/bin/python
+```
+
+</div>
+
+////
+
+//// tab | Windows PowerShell
+
+<div class="termy">
+
+```console
+$ Get-Command python
+
+C:\Users\user\code\awesome-project\.venv\Scripts\python
+```
+
+</div>
+
+////
+
+์ฆ‰, ํ˜„์žฌ ์‚ฌ์šฉ๋˜๋Š” `python` ํ”„๋กœ๊ทธ๋žจ์€ **๊ฐ€์ƒ ํ™˜๊ฒฝ ๋‚ด๋ถ€์— ์žˆ๋Š” ๊ฒƒ**์ž…๋‹ˆ๋‹ค.
+
+Linux์™€ macOS์—์„œ๋Š” `which`, Windows PowerShell์—์„œ๋Š” `Get-Command` ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
+
+์ด ๋ช…๋ น์–ด๋Š” `PATH` ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ง€์ •๋œ ๊ฒฝ๋กœ๋“ค์„ **์ˆœ์„œ๋Œ€๋กœ ํƒ์ƒ‰**ํ•˜๋ฉด์„œ `python`์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
+์ฐพ๋Š” ์ฆ‰์‹œ, ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ **๊ฒฝ๋กœ๋ฅผ ์ถœ๋ ฅ**ํ•ฉ๋‹ˆ๋‹ค.
+
+์ค‘์š”ํ•œ ์ ์€ ํ„ฐ๋ฏธ๋„์—์„œ `python`์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ์‹ค์ œ๋กœ ์‹คํ–‰๋˜๋Š” "`python`"์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
+
+๋”ฐ๋ผ์„œ ํ˜„์žฌ ์˜ฌ๋ฐ”๋ฅธ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
+
+/// tip | ํŒ
+
+ํ•˜๋‚˜์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•œ ๋’ค, ํ•ด๋‹น Python์„ ๊ฐ€์ง„ ์ƒํƒœ์—์„œ **๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ**๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ํ”ํžˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
+
+ํ•˜์ง€๋งŒ ์ด๋•Œ ์ด์ „ ํ”„๋กœ์ ํŠธ์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š” **์ž˜๋ชป๋œ Python ์‹คํ–‰ ํŒŒ์ผ**์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด ์ƒˆ ํ”„๋กœ์ ํŠธ๊ฐ€ **์ •์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.**
+
+๊ทธ๋ž˜์„œ ํ˜„์žฌ ์–ด๋–ค `python`์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์€ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๐Ÿค“
+
+///
+
+## ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์ด์œ 
+
+์˜ˆ๋ฅผ ๋“ค์–ด `๋งˆ๋ฒ•์‚ฌ์˜ ๋Œ(philosophers-stone)`์ด๋ผ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—… ์ค‘์ด๋ผ๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ํ•ด๋‹น **๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”**ํ•˜๊ณ , ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉฐ ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+
+๊ทธ๋Ÿฐ๋ฐ ์ด์ œ๋Š” **๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ**์ธ `์•„์ฆˆ์นด๋ฐ˜์˜ ์ฃ„์ˆ˜(prisoner-of-azkaban)`์„ ์ž‘์—…ํ•˜๊ณ  ์‹ถ์–ด์กŒ์Šต๋‹ˆ๋‹ค.
+
+๊ทธ๋ž˜์„œ ๊ทธ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค:
+
+<div class="termy">
+
+```console
+$ cd ~/code/prisoner-of-azkaban
+```
+
+</div>
+
+๋งŒ์•ฝ `๋งˆ๋ฒ•์‚ฌ์˜ ๋Œ(philosophers-stone)`์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ํ„ฐ๋ฏธ๋„์—์„œ `python`์„ ์‹คํ–‰ํ•  ๋•Œ ์—ฌ์ „ํžˆ `๋งˆ๋ฒ•์‚ฌ์˜ ๋Œ(philosophers-stone)` ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ Python์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+<div class="termy">
+
+```console
+$ cd ~/code/prisoner-of-azkaban
+
+$ python main.py
+
+// sirius๋ฅผ ์ž„ํฌํŠธํ•˜๋Š” ๋ฐ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์•„์š” ๐Ÿ˜ฑ
+Traceback (most recent call last):
+    File "main.py", line 1, in <module>
+        import sirius
+```
+
+</div>
+
+ํ•˜์ง€๋งŒ `๋งˆ๋ฒ•์‚ฌ์˜ ๋Œ(philosophers-stone)`์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋น„ํ™œ์„ฑํ™”ํ•œ ๋‹ค์Œ, `์•„์ฆˆ์นด๋ฐ˜์˜ ์ฃ„์ˆ˜(prisoner-of-azkaban)` ํ”„๋กœ์ ํŠธ์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด, ์ด์ œ `python` ๋ช…๋ น์–ด๋Š” `์•„์ฆˆ์นด๋ฐ˜์˜ ์ฃ„์ˆ˜(prisoner-of-azkaban)` ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ Python์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
+
+<div class="termy">
+
+```console
+$ cd ~/code/prisoner-of-azkaban
+
+// ์ด์ „ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์„ ํ•„์š” ์—†์ด, ์–ด๋””์„œ๋“  ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ ํ›„์—๋„ ๊ดœ์ฐฎ์•„์š” ๐Ÿ˜Ž
+$ deactivate
+
+// prisoner-of-azkaban/.venv ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค ๐Ÿš€
+$ source .venv/bin/activate
+
+// ์ด์ œ python์„ ์‹คํ–‰ํ•˜๋ฉด, ์ด ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์„ค์น˜๋œ sirius ํŒจํ‚ค์ง€๋ฅผ ์ฐพ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค โœจ
+$ python main.py
+
+๋ชป๋œ ์ง“์„ ๊พธ๋ฏธ๊ณ  ์žˆ์Œ์„ ์—„์ˆ™ํžˆ ๋งน์„ธํ•ฉ๋‹ˆ๋‹ค.๐Ÿง™
+ImportError๋Š” ์ด์ œ ์—†์Šต๋‹ˆ๋‹ค. ๐Ÿบ
+```
+
+</div>
+
+## ๋Œ€์•ˆ๋“ค
+
+์ด ๋ฌธ์„œ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด Python ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , **๊ทธ ๋‚ด๋ถ€์—์„œ** ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ„๋‹จํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.
+
+๊ฐ€์ƒ ํ™˜๊ฒฝ, ํŒจํ‚ค์ง€ ์˜์กด์„ฑ(Requirements), ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์ด ์™ธ์—๋„ ๋‹ค์–‘ํ•œ **๋Œ€์•ˆ**๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
+
+๋งŒ์•ฝ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด, **ํ”„๋กœ์ ํŠธ ์ „์ฒด**, ํŒจํ‚ค์ง€ ์˜์กด์„ฑ, ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋“ฑ์„ ํ†ตํ•ฉ์ ์œผ๋กœ **๊ด€๋ฆฌ**ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์จ๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ ์ถ”์ฒœํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">uv</a>์ž…๋‹ˆ๋‹ค.
+
+`uv`๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:
+
+* ๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ **Python ์„ค์น˜**
+* ๊ฐ ํ”„๋กœ์ ํŠธ ๋ณ„ **๊ฐ€์ƒ ํ™˜๊ฒฝ ๊ด€๋ฆฌ**
+* **ํŒจํ‚ค์ง€ ์„ค์น˜**
+* ํ”„๋กœ์ ํŠธ์˜ **์˜์กด์„ฑ๊ณผ ๋ฒ„์ „** ๊ด€๋ฆฌ
+* ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋“ค๊ณผ ๊ทธ ๋ฒ„์ „์„ **์ •ํ™•ํžˆ ๊ณ ์ •(lock)**ํ•ด์„œ,๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์šด์˜ ํ™˜๊ฒฝ์ด ์™„์ „ํžˆ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅ
+* ์ด ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›
+
+## ๊ฒฐ๋ก 
+
+์—ฌ๊ธฐ๊นŒ์ง€ ๋ชจ๋‘ ์ฝ๊ณ  ์ดํ•ดํ–ˆ๋‹ค๋ฉด, ์ด์ œ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค๋ณด๋‹ค ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ **ํ›จ์”ฌ ๋” ๊นŠ์ด ์žˆ๊ฒŒ ์ดํ•ด**ํ•˜๊ฒŒ ๋˜์…จ์Šต๋‹ˆ๋‹ค. ๐Ÿค“
+
+์ด๋Ÿฐ ์„ธ๋ถ€์ ์ธ ๋‚ด์šฉ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด, ์–ธ์  ๊ฐ€ ๋ณต์žกํ•ด ๋ณด์ด๋Š” ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ ๋ถ„๋ช…ํžˆ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ๋Š” **์ด ๋ชจ๋“  ๊ฒƒ๋“ค์ด ๋‚ด๋ถ€์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€** ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜Ž