FastAPI - Virutual Environment & Install

Kjjeddยท2026๋…„ 1์›” 13์ผ

FastAPI

๋ชฉ๋ก ๋ณด๊ธฐ
2/16
post-thumbnail

๐Ÿ ๊ฐ€์ƒํ™˜๊ฒฝ(Virtual Environment)๊ณผ FastAPI ์„ค์น˜

FastAPI๋กœ ๋ณธ๊ฒฉ์ ์ธ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ๋จผ์ € ์ •๋ฆฌํ•ด์•ผ ํ•  ๊ฐœ๋…:

๊ฐ€์ƒํ™˜๊ฒฝ(Virtual Environment)


๐Ÿค” Virtual Environment๋ž€?

๋‹จ์–ด๋ถ€ํ„ฐ ํ’€์–ด๋ณด์ž.

  • Virtual โ†’ ์‹ค์ œ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์‹ค์ œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š”
  • Environment โ†’ ์ž‘์—… ํ™˜๊ฒฝ

์ฆ‰, ๊ฐ€์ƒํ™˜๊ฒฝ์ด๋ž€

๐Ÿ‘‰ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Python ํ™˜๊ฒฝ


๐Ÿ“ฆ ๋น„์œ ๋กœ ์ดํ•ดํ•˜๊ธฐ

๊ฐ€์ƒํ™˜๊ฒฝ์€ ๊ฐ์ž ๋”ฐ๋กœ ์“ฐ๋Š” ์ฑ…์ƒ๊ณผ ๊ฐ™๋‹ค.

  • ์ฒ ์ˆ˜์˜ ์ฑ…์ƒ โ†’ ์ฒ ์ˆ˜ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋„๊ตฌ๋งŒ
  • ์˜ํฌ์˜ ์ฑ…์ƒ โ†’ ์˜ํฌ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋„๊ตฌ๋งŒ

์„œ๋กœ์˜ ๋„๊ตฌ๊ฐ€ ์„ž์ด์ง€ ์•Š์œผ๋‹ˆ ํŒจํ‚ค์ง€ ๋ฒ„์ „ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ‘‰ ๊ฐ€์ƒํ™˜๊ฒฝ์˜ ํ•ต์‹ฌ ๋ชฉ์ ์€ ๊ฒฉ๋ฆฌ(Isolation)๋‹ค


โš ๏ธ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฌ์šด ๊ฐœ๋…

Virtual Environment โ‰  Environment Variable

  • Virtual Environment โ†’ ํŒŒ์ผ๊ณผ ํŒจํ‚ค์ง€๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ
  • Environment Variable โ†’ ํ”„๋กœ๊ทธ๋žจ์ด ์ฐธ์กฐํ•˜๋Š” ์„ค์ • ๊ฐ’

์ด๋ฆ„์ด ๋น„์Šทํ•  ๋ฟ, ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค.


๐Ÿšจ ์™œ ๊ฐ€์ƒํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ๊ฐ€?

Python ํŒจํ‚ค์ง€๋ฅผ ์ „์—ญ(Global)์— ์„ค์น˜ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

โŒ ํŒจํ‚ค์ง€ ๋ฒ„์ „ ์ถฉ๋Œ

์˜ˆ๋ฅผ ๋“ค์–ด,

  • A ํ”„๋กœ์ ํŠธ โ†’ harry==1 ํ•„์š”
  • B ํ”„๋กœ์ ํŠธ โ†’ harry==3 ํ•„์š”

์ „์—ญ ํ™˜๊ฒฝ์—๋Š” ํ•˜๋‚˜์˜ ๋ฒ„์ „๋งŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰ ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ ์น˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊นจ์ง„๋‹ค

๊ฐ€์ƒํ™˜๊ฒฝ์€ ์ด ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•ด์ค€๋‹ค.


๐Ÿ“ 1๋‹จ๊ณ„: ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ

๋จผ์ € ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ด์„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

# ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd ~

# ์ฝ”๋“œ๋“ค์„ ๋ชจ์•„๋‘˜ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
mkdir code

# code ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd code

# ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
mkdir cloud-community

# ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd cloud-community

์ด์ œ ์ด ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ FastAPI ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ์˜ ์‹œ์ž‘์ ์ด๋‹ค.


๐Ÿ 2๋‹จ๊ณ„: ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ

๐Ÿ“Œ ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ์€ ํ”„๋กœ์ ํŠธ๋‹น ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค

๋ฐฉ๋ฒ• 1๏ธโƒฃ Python ๊ธฐ๋ณธ venv ์‚ฌ์šฉ

python -m venv .venv

์ด ๋ช…๋ น์–ด๋Š” .venv๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— ๋…๋ฆฝ์ ์ธ Python ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•œ๋‹ค.

๋ฐฉ๋ฒ• 2๏ธโƒฃ uv ์‚ฌ์šฉ (๋” ๋น ๋ฅธ ๋Œ€์•ˆ)

uv venv .venv

๋‘˜ ์ค‘ ์–ด๋–ค ๋ฐฉ์‹์„ ์จ๋„ ์ƒ๊ด€์—†๋‹ค. ๊ฐœ๋…์€ ์™„์ „ํžˆ ๋™์ผํ•˜๋‹ค.


โšก 3๋‹จ๊ณ„: ๊ฐ€์ƒ ํ™˜๊ฒฝ ํ™œ์„ฑํ™”

โ— ์ด ๋‹จ๊ณ„๋Š” ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์„ ์—ด ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•˜๋‹ค

์šด์˜์ฒด์ œ ๋ช…๋ น์–ด
Linux / macOS source .venv/bin/activate
Windows (PowerShell) .venv\Scripts\Activate.ps
Windows (Git Bash) source .venv/Scripts/activate

Linux / macOS ์˜ˆ์‹œ

source .venv/bin/activate

์ด์ œ ํ„ฐ๋ฏธ๋„ ์•ž์— (.venv) ๊ฐ™์€ ํ‘œ์‹œ๊ฐ€ ๋ถ™์—ˆ๋‹ค๋ฉด ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ์ •์ƒ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋œ ์ƒํƒœ๋‹ค.


๐Ÿ” 4๋‹จ๊ณ„: ๊ฐ€์ƒ ํ™˜๊ฒฝ ํ™œ์„ฑํ™” ํ™•์ธ (์„ ํƒ์‚ฌํ•ญ)

๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ์ œ๋Œ€๋กœ ํ™œ์„ฑํ™”๋˜์—ˆ๋Š”์ง€ ํ•œ ๋ฒˆ ๋” ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

ํ•ต์‹ฌ์€ ์•„์ฃผ ๋‹จ์ˆœํ•˜๋‹ค.

๐Ÿ‘‰ ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ python์ด ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์˜ .venv๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ

Linux / macOS / Git Bash

which python

์ถœ๋ ฅ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๋น„์Šทํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค.

/home/your-name/code/cloud-community/.venv/bin/python

์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํฌ์ธํŠธ๋Š” ์ด๊ฒƒ์ด๋‹ค.

๐Ÿ‘‰ ๊ฒฝ๋กœ ์•ˆ์— .venv๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”๊ฐ€?

  • โœ… ํฌํ•จ๋˜์–ด ์žˆ๋‹ค โ†’ ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ •์ƒ ํ™œ์„ฑํ™”
  • โŒ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค โ†’ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋ฏธํ™œ์„ฑํ™” ์ƒํƒœ

๐Ÿ’ก ์ด ์ถœ๋ ฅ์ด ๋ณด์ด๋ฉด ์„ฑ๊ณต
ํ˜„์žฌ ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰๋˜๋Š” python์€ ์ „์—ญ Python์ด ์•„๋‹ˆ๋ผ
ํ”„๋กœ์ ํŠธ ์ „์šฉ ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ Python์ด๋‹ค.


Windows (PowerShell)

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์„ ์‹คํ–‰ํ•˜๋ฉด,

  • ์‹œ์Šคํ…œ Python์ด ์•„๋‹ˆ๋ผ
  • ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ Python์ด ๋จผ์ € ์„ ํƒ๋œ๋‹ค

๐Ÿ‘‰ ์ด๊ฒƒ์ด ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ๋™์ž‘ํ•˜๋Š” ํ•ต์‹ฌ ์›๋ฆฌ๋‹ค


๐Ÿ“ฆ 5๋‹จ๊ณ„: FastAPI ์„ค์น˜

์ด์ œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ์ค€๋น„๋˜์—ˆ์œผ๋‹ˆ FastAPI๋ฅผ ์„ค์น˜ํ•  ์ฐจ๋ก€๋‹ค.

โš ๏ธ ๋ฐ˜๋“œ์‹œ (.venv)๊ฐ€ ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค

pip ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ (๊ถŒ์žฅ)

python -m pip install --upgrade pip

์ด ๋ช…๋ น์–ด๋Š”

  • pip๊ฐ€ ์˜ค๋ž˜๋œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ณ 
  • ํŒจํ‚ค์ง€ ์„ค์น˜ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค

FastAPI ์„ค์น˜

pip install "fastapi[standard]"

์—ฌ๊ธฐ์„œ [standard]๋Š”

  • FastAPI ์‹คํ–‰์— ํ•„์š”ํ•œ
  • ๊ถŒ์žฅ ์˜์กด์„ฑ ํŒจํ‚ค์ง€๋“ค์„ ํ•จ๊ป˜ ์„ค์น˜ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค

๐Ÿ‘‰ ์‹ค์Šต์šฉ/ํ•™์Šต์šฉ์—์„œ๋Š” [standard] ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค


.gitignore ์„ค์ •

๊ฐ€์ƒ ํ™˜๊ฒฝ ๋””๋ ‰ํ† ๋ฆฌ๋Š” Git์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.

# ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— .gitignore ํŒŒ์ผ ์ƒ์„ฑ
echo "*" > .gitignore

๋ช…๋ น์–ด ํ•ด์„:

echo "*": "*" ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ (* ๋Š” Git์—์„œ "๋ชจ๋“  ๊ฒƒ"์„ ์˜๋ฏธ)
> : ์ถœ๋ ฅ์„ ํŒŒ์ผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
.gitignore : ์ƒ์„ฑํ•  ํŒŒ์ผ ๊ฒฝ๋กœ


๐Ÿ›‘ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋น„ํ™œ์„ฑํ™”

์ž‘์—…์„ ๋งˆ์ณค๋‹ค๋ฉด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.

deactivate

์ดํ›„ python ๋ช…๋ น์–ด๋Š” ๋‹ค์‹œ ์ „์—ญ Python์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.


โœ… ํ•ต์‹ฌ ์š”์•ฝ

  • ๊ฐ€์ƒ ํ™˜๊ฒฝ์€ ํ”„๋กœ์ ํŠธ๋ณ„ ๋…๋ฆฝ Python ํ™˜๊ฒฝ์ด๋‹ค
  • ์ƒ์„ฑ์€ 1๋ฒˆ, ํ™œ์„ฑํ™”๋Š” ํ„ฐ๋ฏธ๋„ ์„ธ์…˜๋งˆ๋‹ค ํ•„์š”ํ•˜๋‹ค
  • which python์œผ๋กœ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค
  • FastAPI๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ€์ƒ ํ™˜๊ฒฝ ์•ˆ์— ์„ค์น˜ํ•œ๋‹ค
profile
Gongbuhaja

0๊ฐœ์˜ ๋Œ“๊ธ€