
FastAPI๋ก ๋ณธ๊ฒฉ์ ์ธ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์์ํ๊ธฐ ์ ์ ๋ฐ๋์ ๋จผ์ ์ ๋ฆฌํด์ผ ํ ๊ฐ๋ :
๊ฐ์ํ๊ฒฝ(Virtual Environment)
๋จ์ด๋ถํฐ ํ์ด๋ณด์.
์ฆ, ๊ฐ์ํ๊ฒฝ์ด๋
๐ ํ๋ก์ ํธ๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ๋ Python ํ๊ฒฝ
๊ฐ์ํ๊ฒฝ์ ๊ฐ์ ๋ฐ๋ก ์ฐ๋ ์ฑ ์๊ณผ ๊ฐ๋ค.
์๋ก์ ๋๊ตฌ๊ฐ ์์ด์ง ์์ผ๋ ํจํค์ง ๋ฒ์ ์ถฉ๋์ด ๋ฐ์ํ์ง ์๋๋ค.
๐ ๊ฐ์ํ๊ฒฝ์ ํต์ฌ ๋ชฉ์ ์ ๊ฒฉ๋ฆฌ(Isolation)๋ค
Virtual Environment โ Environment Variable
์ด๋ฆ์ด ๋น์ทํ ๋ฟ, ์์ ํ ๋ค๋ฅธ ๊ฐ๋ ์ด๋ค.
Python ํจํค์ง๋ฅผ ์ ์ญ(Global)์ ์ค์นํ๋ฉด ์๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
์๋ฅผ ๋ค์ด,
harry==1 ํ์harry==3 ํ์์ ์ญ ํ๊ฒฝ์๋ ํ๋์ ๋ฒ์ ๋ง ์ค์นํ ์ ์๋ค.
๐ ํ ํ๋ก์ ํธ๋ฅผ ๊ณ ์น๋ฉด ๋ค๋ฅธ ํ๋ก์ ํธ๊ฐ ๊นจ์ง๋ค
๊ฐ์ํ๊ฒฝ์ ์ด ๋ฌธ์ ๋ฅผ ์์ ํ ํด๊ฒฐํด์ค๋ค.
๋จผ์ ํ๋ก์ ํธ๋ฅผ ๋ด์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
# ํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd ~
# ์ฝ๋๋ค์ ๋ชจ์๋ ๋๋ ํ ๋ฆฌ ์์ฑ
mkdir code
# code ๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd code
# ์ ํ๋ก์ ํธ ์์ฑ
mkdir cloud-community
# ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd cloud-community
์ด์ ์ด ๋๋ ํ ๋ฆฌ๊ฐ FastAPI ์ปค๋ฎค๋ํฐ ๋ฐฑ์๋ ํ๋ก์ ํธ์ ์์์ ์ด๋ค.
๐ ๊ฐ์ ํ๊ฒฝ ์์ฑ์ ํ๋ก์ ํธ๋น ํ ๋ฒ๋ง ์ํํ๋ค
python -m venv .venv
์ด ๋ช
๋ น์ด๋ .venv๋ผ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ,
๊ทธ ์์ ๋
๋ฆฝ์ ์ธ Python ์คํ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ค.
uv venv .venv
๋ ์ค ์ด๋ค ๋ฐฉ์์ ์จ๋ ์๊ด์๋ค. ๊ฐ๋ ์ ์์ ํ ๋์ผํ๋ค.
โ ์ด ๋จ๊ณ๋ ํฐ๋ฏธ๋ ์ธ์ ์ ์ด ๋๋ง๋ค ํ์ํ๋ค
| ์ด์์ฒด์ | ๋ช ๋ น์ด |
|---|---|
| Linux / macOS | source .venv/bin/activate |
| Windows (PowerShell) | .venv\Scripts\Activate.ps |
| Windows (Git Bash) | source .venv/Scripts/activate |
source .venv/bin/activate
์ด์ ํฐ๋ฏธ๋ ์์ (.venv) ๊ฐ์ ํ์๊ฐ ๋ถ์๋ค๋ฉด
๊ฐ์ ํ๊ฒฝ์ด ์ ์์ ์ผ๋ก ํ์ฑํ๋ ์ํ๋ค.
๊ฐ์ ํ๊ฒฝ์ด ์ ๋๋ก ํ์ฑํ๋์๋์ง ํ ๋ฒ ๋ ํ์ธํ๊ณ ์ถ๋ค๋ฉด ์๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
ํต์ฌ์ ์์ฃผ ๋จ์ํ๋ค.
๐ ํ์ฌ ์ฌ์ฉ ์ค์ธ python์ด
ํ๋ก์ ํธ ๋ด๋ถ์ .venv๋ฅผ ๊ฐ๋ฆฌํค๋์ง ํ์ธํ๋ ๊ฒ
which python
์ถ๋ ฅ ์์๋ ์๋์ ๋น์ทํ๊ฒ ๋์จ๋ค.
/home/your-name/code/cloud-community/.venv/bin/python
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ํฌ์ธํธ๋ ์ด๊ฒ์ด๋ค.
๐ ๊ฒฝ๋ก ์์ .venv๊ฐ ํฌํจ๋์ด ์๋๊ฐ?
๐ก ์ด ์ถ๋ ฅ์ด ๋ณด์ด๋ฉด ์ฑ๊ณต
ํ์ฌ ํฐ๋ฏธ๋์์ ์คํ๋๋ python์ ์ ์ญ Python์ด ์๋๋ผ
ํ๋ก์ ํธ ์ ์ฉ ๊ฐ์ ํ๊ฒฝ์ Python์ด๋ค.
Get-Command python
์ถ๋ ฅ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
C:\Users\your-name\code\cloud-community\.venv\Scripts\python.exe
๋ง์ฐฌ๊ฐ์ง๋ก,
๐ ๊ฒฝ๋ก์ .venv๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ ์
๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๋ฉด ๋ด๋ถ์ ์ผ๋ก PATH ํ๊ฒฝ ๋ณ์๊ฐ ๋ฐ๋๋ค.
์๋ ์ํ์์๋
/usr/bin:/bin
๊ฐ์ ํ๊ฒฝ ํ์ฑํ ํ์๋
.venv/bin:/usr/bin:/bin
์ด๋ ๊ฒ .venv/bin ๊ฒฝ๋ก๊ฐ ๋งจ ์์ ์ถ๊ฐ๋๋ค.
๊ทธ๋์ ํฐ๋ฏธ๋์์ python์ ์คํํ๋ฉด,
๐ ์ด๊ฒ์ด ๊ฐ์ ํ๊ฒฝ์ด ๋์ํ๋ ํต์ฌ ์๋ฆฌ๋ค
์ด์ ๊ฐ์ ํ๊ฒฝ์ด ์ค๋น๋์์ผ๋ FastAPI๋ฅผ ์ค์นํ ์ฐจ๋ก๋ค.
โ ๏ธ ๋ฐ๋์ (.venv)๊ฐ ํ์ฑํ๋ ์ํ์์ ์คํํด์ผ ํ๋ค
python -m pip install --upgrade pip
์ด ๋ช ๋ น์ด๋
pip install "fastapi[standard]"
์ฌ๊ธฐ์ [standard]๋
๐ ์ค์ต์ฉ/ํ์ต์ฉ์์๋ [standard] ์ฌ์ฉ์ ๊ถ์ฅํ๋ค
๊ฐ์ ํ๊ฒฝ ๋๋ ํ ๋ฆฌ๋ Git์ ํฌํจ์ํค์ง ์๋๋ค.
# ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์์ .gitignore ํ์ผ ์์ฑ
echo "*" > .gitignore
echo "*": "*" ๋ฌธ์์ด์ ์ถ๋ ฅ (* ๋ Git์์ "๋ชจ๋ ๊ฒ"์ ์๋ฏธ)์์ ์ ๋ง์ณค๋ค๋ฉด ๊ฐ์ ํ๊ฒฝ์ ์ข ๋ฃํ ์ ์๋ค.
deactivate ์ดํ python ๋ช
๋ น์ด๋ ๋ค์ ์ ์ญ Python์ ์ฌ์ฉํ๊ฒ ๋๋ค.
which python์ผ๋ก ํ์ฑํ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ค