--- /dev/null
+# ๊ฐ์ ํ๊ฒฝ
+
+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)**ํด์,๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์ด์ ํ๊ฒฝ์ด ์์ ํ ๋์ผํ๊ฒ ์๋ํ ์ ์๋๋ก ๋ณด์ฅ
+* ์ด ์ธ์๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ง์
+
+## ๊ฒฐ๋ก
+
+์ฌ๊ธฐ๊น์ง ๋ชจ๋ ์ฝ๊ณ ์ดํดํ๋ค๋ฉด, ์ด์ ๋ง์ ๊ฐ๋ฐ์๋ค๋ณด๋ค ๊ฐ์ ํ๊ฒฝ์ **ํจ์ฌ ๋ ๊น์ด ์๊ฒ ์ดํด**ํ๊ฒ ๋์
จ์ต๋๋ค. ๐ค
+
+์ด๋ฐ ์ธ๋ถ์ ์ธ ๋ด์ฉ์ ์๊ณ ์์ผ๋ฉด, ์ธ์ ๊ฐ ๋ณต์กํด ๋ณด์ด๋ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น
ํ ๋ ๋ถ๋ช
ํ ํฐ ๋์์ด ๋ ๊ฒ์
๋๋ค. ์ด์ ๋ **์ด ๋ชจ๋ ๊ฒ๋ค์ด ๋ด๋ถ์์ ์ด๋ป๊ฒ ์๋ํ๋์ง** ์๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๐