๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ์ผ์ง€ ๐Ÿ‘ฉ‍๐Ÿ’ป

Python ๊ฐ€์ƒํ™˜๊ฒฝ๊ณผ externally-managed-environment ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

by chuyj15 2025. 8. 20.
728x90
๋ฐ˜์‘ํ˜•
SMALL

 

๊ฐ€์ƒํ™˜๊ฒฝ์ด๋ž€?

๊ฐ€์ƒํ™˜๊ฒฝ(Virtual Environment)์€ Python ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๋…๋ฆฝ๋œ ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๊ฐ€์ƒํ™˜๊ฒฝ์˜ ํ•„์š”์„ฑ

์ปดํ“จํ„ฐ(์ง‘)
โ”œโ”€โ”€ ์‹œ์Šคํ…œ Python(๊ฑฐ์‹ค) - ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๊ณต์œ 
โ”œโ”€โ”€ ํ”„๋กœ์ ํŠธA ๊ฐ€์ƒํ™˜๊ฒฝ(A์˜ ๋ฐฉ) - A ์ „์šฉ ํŒจํ‚ค์ง€
โ””โ”€โ”€ ํ”„๋กœ์ ํŠธB ๊ฐ€์ƒํ™˜๊ฒฝ(B์˜ ๋ฐฉ) - B ์ „์šฉ ํŒจํ‚ค์ง€

์‹œ์Šคํ…œ ์ „์ฒด ์„ค์น˜ vs ๊ฐ€์ƒํ™˜๊ฒฝ

๊ตฌ๋ถ„ ์‹œ์Šคํ…œ ์ „์ฒด ์„ค์น˜ ๊ฐ€์ƒํ™˜๊ฒฝ ์‚ฌ์šฉ

์„ค์น˜ ์œ„์น˜ ์‹œ์Šคํ…œ Python์— ๋ชจ๋“  ํŒจํ‚ค์ง€ ์„ค์น˜ ๊ฐ ํ”„๋กœ์ ํŠธ๋ณ„ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ
ํŒจํ‚ค์ง€ ๋ฒ„์ „ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐ™์€ ๋ฒ„์ „ ๊ณต์œ  ํ”„๋กœ์ ํŠธ๋ณ„ ๋‹ค๋ฅธ ๋ฒ„์ „ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
์ถฉ๋Œ ์œ„ํ—˜ ๋†’์Œ (๋ฒ„์ „ ์ถฉ๋Œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ) ๋‚ฎ์Œ (์™„์ „ํžˆ ๊ฒฉ๋ฆฌ๋จ)
์•ˆ์ „์„ฑ ์‹œ์Šคํ…œ Python ๋ณ€๊ฒฝ์œผ๋กœ ์œ„ํ—˜ ์‹œ์Šคํ…œ์— ์˜ํ–ฅ ์—†์Œ

๊ฐ€์ƒํ™˜๊ฒฝ์˜ ์žฅ์ 

  1. ๋…๋ฆฝ์„ฑ: ๊ฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋งŒ ์„ค์น˜
  2. ์•ˆ์ „์„ฑ: ์‹œ์Šคํ…œ Python์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•„ ์•ˆ์ •์„ฑ ์œ ์ง€
  3. ์ถฉ๋Œ ๋ฐฉ์ง€: ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€ ์ถฉ๋Œ ๋ฐฉ์ง€
  4. ์ด์‹์„ฑ: ํ”„๋กœ์ ํŠธ ์ด๋™ ์‹œ ์˜์กด์„ฑ ๊ด€๋ฆฌ ์šฉ์ด

externally-managed-environment ์˜ค๋ฅ˜ ๋ถ„์„

์˜ค๋ฅ˜ ๋ฐœ์ƒ ์›์ธ

macOS์—์„œ Homebrew๋กœ ์„ค์น˜๋œ Python์€ PEP 668 ์ •์ฑ…์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž(Homebrew)์™€์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘์ ์ธ pip ์„ค์น˜๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

pip install uv
# error: externally-managed-environment
# × This environment is externally managed

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ํ•ด์„

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•ด๊ฒฐ์ฑ…๋“ค:

  1. Homebrew ์‚ฌ์šฉ: brew install xyz
  2. ๊ฐ€์ƒํ™˜๊ฒฝ ์‚ฌ์šฉ: python3 -m venv path/to/venv
  3. pipx ์‚ฌ์šฉ: brew install pipx
  4. ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€ ์ œํ•œ ํ•ด์ œ: --break-system-packages (๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋ฐฉ๋ฒ• 1: pipx ์‚ฌ์šฉ (์ถ”์ฒœ)

pipx๋Š” Python ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋…๋ฆฝ์ ์ธ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

# pipx ์„ค์น˜
brew install pipx

# uv ์„ค์น˜
pipx install uv

# ์„ค์น˜ ํ™•์ธ
uv --version

์„ค์น˜ ์œ„์น˜:

# pipx ๊ฐ€์ƒํ™˜๊ฒฝ ์œ„์น˜
~/.local/share/pipx/venvs/uv/

# ์‹คํ–‰ ํŒŒ์ผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ
~/.local/bin/uv

# pipx๋กœ ์„ค์น˜๋œ ๋ชจ๋“  ์•ฑ ํ™•์ธ
pipx list

์žฅ์ :

  • ์ž๋™์œผ๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ
  • ๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์–ด
  • ์‹œ์Šคํ…œ Python๊ณผ ๊ฒฉ๋ฆฌ

๋ฐฉ๋ฒ• 2: ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ํ›„ ์„ค์น˜

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
python3 -m venv myproject-env

# ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
source myproject-env/bin/activate

# uv ์„ค์น˜
pip install uv

# ๊ฐ€์ƒํ™˜๊ฒฝ ๋น„ํ™œ์„ฑํ™”
deactivate

์„ค์น˜ ์œ„์น˜:

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ „์ฒด ๊ตฌ์กฐ
myproject-env/
โ”œโ”€โ”€ bin/                    # ์‹คํ–‰ ํŒŒ์ผ๋“ค
โ”‚   โ”œโ”€โ”€ python -> python3   # Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ
โ”‚   โ”œโ”€โ”€ pip                 # pip
โ”‚   โ””โ”€โ”€ uv                  # ์„ค์น˜๋œ uv
โ”œโ”€โ”€ include/                # ํ—ค๋” ํŒŒ์ผ
โ”œโ”€โ”€ lib/
โ”‚   โ””โ”€โ”€ python3.x/
โ”‚       โ””โ”€โ”€ site-packages/  # ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋“ค
โ”‚           โ””โ”€โ”€ uv/         # uv ํŒจํ‚ค์ง€
โ””โ”€โ”€ pyvenv.cfg             # ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ •

# ํ™•์ธ ๋ช…๋ น์–ด
which python    # myproject-env/bin/python
which pip       # myproject-env/bin/pip
which uv        # myproject-env/bin/uv

๋ฐฉ๋ฒ• 3: Homebrew ์ง์ ‘ ์„ค์น˜

# Homebrew๋กœ uv ์„ค์น˜ (๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ)
brew install uv

์„ค์น˜ ์œ„์น˜:

# Apple Silicon Mac (M1/M2/M3)
/opt/homebrew/bin/uv
/opt/homebrew/Cellar/uv/[๋ฒ„์ „]/

# Intel Mac
/usr/local/bin/uv
/usr/local/Cellar/uv/[๋ฒ„์ „]/

# ํ™•์ธ ๋ช…๋ น์–ด
which uv                    # /opt/homebrew/bin/uv
brew list uv                # ์„ค์น˜๋œ ํŒŒ์ผ ๋ชฉ๋ก
brew info uv                # ์ƒ์„ธ ์ •๋ณด

๋ฐฉ๋ฒ• 4: ์‹œ์Šคํ…œ ์ œํ•œ ํ•ด์ œ (๋น„์ถ”์ฒœ)

# ์ž„์‹œ์  ํ•ด์ œ
pip install uv --break-system-packages

# ๋˜๋Š” ์‚ฌ์šฉ์ž ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜
pip install uv --user

์„ค์น˜ ์œ„์น˜:

# --break-system-packages ์‚ฌ์šฉ ์‹œ
# Homebrew Python์˜ site-packages
/opt/homebrew/lib/python3.x/site-packages/uv/

# --user ์‚ฌ์šฉ ์‹œ
# ์‚ฌ์šฉ์ž ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ
~/.local/lib/python3.x/site-packages/uv/
~/.local/bin/uv

# ํ™•์ธ ๋ช…๋ น์–ด
python3 -m site --user-site    # ์‚ฌ์šฉ์ž site-packages ์œ„์น˜
pip show uv                     # ํŒจํ‚ค์ง€ ์„ค์น˜ ์ •๋ณด

์ฃผ์˜: ์ด ๋ฐฉ๋ฒ•์€ ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์„ ํ•ด์น  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

  1. Homebrew๋กœ ์„ค์น˜ํ•  ๊ฒฝ์šฐ
  • ์„ค์น˜ ์œ„์น˜: /usr/local/Cellar/ (์‹œ์Šคํ…œ ๋ ˆ๋ฒจ)
  • ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • PATH์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋จ
  • ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์˜ˆ: brew install python → /usr/local/Cellar/python/3.x.x/
  1. ๊ฐ€์ƒํ™˜๊ฒฝ(venv)์œผ๋กœ ์„ค์น˜ํ•  ๊ฒฝ์šฐ
  • ์„ค์น˜ ์œ„์น˜: ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด (์˜ˆ: test-server/venv/)
  • ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ ์‚ฌ์šฉ
  • ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ ์ œ๊ณต
  • ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™” ํ•„์š” (source venv/bin/activate)
  • ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์˜ํ–ฅ ์ฃผ์ง€ ์•Š์Œ
  1. pipx๋กœ ์„ค์น˜ํ•  ๊ฒฝ์šฐ
  • ์„ค์น˜ ์œ„์น˜: ~/.local/pipx/venvs/ (์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ)
  • ๊ฐ ํŒจํ‚ค์ง€๋ณ„๋กœ ๋…๋ฆฝ๋œ ๊ฐ€์ƒํ™˜๊ฒฝ ์ž๋™ ์ƒ์„ฑ
  • ์‹คํ–‰ ํŒŒ์ผ์€ ~/.local/bin/์— ์ƒ์„ฑ
  • ๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ฐ๊ฐ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ
  • ์ฃผ๋กœ CLI ๋„๊ตฌ ์„ค์น˜์— ์‚ฌ์šฉ

 

# Homebrew ์„ค์น˜

brew install python  # → /usr/local/bin/python3

 

๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์น˜

python3 -m venv test-server/venv  # → test-server/venv/bin/python

 

# pipx ์„ค์น˜

pipx install black  # → ~/.local/pipx/venvs/black/bin/black

 

์ฃผ์š” ์ฐจ์ด์ :

  1. Homebrew: ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•  ๋„๊ตฌ ์„ค์น˜
  2. ๊ฐ€์ƒํ™˜๊ฒฝ: ํ”„๋กœ์ ํŠธ๋ณ„ Python ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ
  3. pipx: Python์œผ๋กœ ์ž‘์„ฑ๋œ ๋…๋ฆฝ์ ์ธ ๋„๊ตฌ ์„ค์น˜

์‚ฌ์šฉ ์ถ”์ฒœ:

  • ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ๋Š” → ๊ฐ€์ƒํ™˜๊ฒฝ ์‚ฌ์šฉ
  • Python์œผ๋กœ ์ž‘์„ฑ๋œ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋Š” → pipx ์‚ฌ์šฉ
  • ์‹œ์Šคํ…œ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋Š” → Homebrew ์‚ฌ์šฉ

 

 

 

Homebrew์™€ pip์˜ ์ฃผ์š” ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค:

  1. ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋ฐฉ์‹
  • Homebrew:
  • Python ์™ธ์˜ ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ๊นŒ์ง€ ๊ด€๋ฆฌ
  • ์˜ˆ: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•  ๋•Œ ํ•„์š”ํ•œ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ํ•จ๊ป˜ ์„ค์น˜
  • OS ๋ ˆ๋ฒจ์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €
  • pip:
  • Python ํŒจํ‚ค์ง€๋งŒ ๊ด€๋ฆฌ
  • ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ์€ ์ง์ ‘ ์„ค์น˜ํ•ด์•ผ ํ•จ
  • Python ์ „์šฉ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €
  1. ์„ค์น˜ ๊ณผ์ •
  • Homebrew:
  • ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์„ค์น˜ (bottle์ด๋ผ๊ณ  ๋ถ€๋ฆ„)
  • ์„ค์น˜๊ฐ€ ๋” ์•ˆ์ •์ ์ด๊ณ  ๋น ๋ฆ„
  • macOS์— ์ตœ์ ํ™”๋œ ์„ค์ •์œผ๋กœ ์ปดํŒŒ์ผ๋จ
  • pip:
  • ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋กœ์ปฌ์—์„œ ์ปดํŒŒ์ผ
  • ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ์‹œ์Šคํ…œ๋ณ„ ์ตœ์ ํ™”๊ฐ€ ์•ˆ ๋  ์ˆ˜ ์žˆ์Œ
  1. ์—…๋ฐ์ดํŠธ์™€ ๋กค๋ฐฑ
  • Homebrew:
  • ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋” ์—„๊ฒฉํ•จ
  • ์ด์ „ ๋ฒ„์ „์œผ๋กœ ์‰ฝ๊ฒŒ ๋กค๋ฐฑ ๊ฐ€๋Šฅ
  • ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์ผ๊ด€์„ฑ ์œ ์ง€
  • pip:
  • ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋œ ์—„๊ฒฉํ•จ
  • ๋กค๋ฐฑ์ด ์ƒ๋Œ€์ ์œผ๋กœ ์–ด๋ ค์›€
  • ํŒจํ‚ค์ง€ ๊ฐ„ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

# OpenCV ์„ค์น˜ ์‹œ

brew install opencv

# → opencv ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•„์š”ํ•œ ๋ชจ๋“  ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(numpy, ffmpeg ๋“ฑ)๋„ ํ•จ๊ป˜ ์„ค์น˜

 

pip install opencv-python

# → Python ํŒจํ‚ค์ง€๋งŒ ์„ค์น˜๋˜๊ณ ํ•„์š”ํ•œ ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์•ผ ํ•จ

 

 

๊ฒฐ๋ก ์ ์œผ๋กœ:

  • Homebrew๋Š” ์‹œ์Šคํ…œ ์ˆ˜์ค€์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋กœ, ๋” ์•ˆ์ •์ ์ด๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์›€
  • pip๋Š” Python ์ƒํƒœ๊ณ„์— ํŠนํ™”๋œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €
  • ๊ฐ€๋Šฅํ•˜๋ฉด ์‹œ์Šคํ…œ ๋„๊ตฌ๋Š” Homebrew๋กœ, Python ๊ฐœ๋ฐœ์šฉ ํŒจํ‚ค์ง€๋Š” ๊ฐ€์ƒํ™˜๊ฒฝ ๋‚ด์—์„œ pip๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋จ

์ด๊ฒƒ์ด Homebrew๊ฐ€ ๊ถŒ์žฅ๋˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋” ์ž˜ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

์„ค์น˜ ์œ„์น˜ ์ข…ํ•ฉ ๋น„๊ต

์„ค์น˜ ๋ฐฉ๋ฒ•             ์‹คํ–‰ ํŒŒ์ผ ์œ„์น˜            ํŒจํ‚ค์ง€ ์œ„์น˜             ์ „์—ญ ์‚ฌ์šฉ             ๊ฒฉ๋ฆฌ์„ฑ

pipx ~/.local/bin/uv ~/.local/share/pipx/venvs/uv/ โœ“ โœ“
๊ฐ€์ƒํ™˜๊ฒฝ ./venv/bin/uv ./venv/lib/python3.x/site-packages/ โœ— โœ“
Homebrew /opt/homebrew/bin/uv /opt/homebrew/Cellar/uv/ โœ“ โœ“
--user ~/.local/bin/uv ~/.local/lib/python3.x/site-packages/ โœ“ โœ—
--break-system /opt/homebrew/bin/uv /opt/homebrew/lib/python3.x/site-packages/ โœ“ โœ—

์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์‹œ

uv๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ

# ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
uv init my-project
cd my-project

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํŒจํ‚ค์ง€ ์„ค์น˜
uv add fastapi
uv add uvicorn

# ํ”„๋กœ์ ํŠธ ์‹คํ–‰
uv run main.py

์ „ํ†ต์ ์ธ ๋ฐฉ๋ฒ•๊ณผ ๋น„๊ต

# ์ „ํ†ต์ ์ธ ๋ฐฉ๋ฒ•
python -m venv venv
source venv/bin/activate
pip install fastapi uvicorn
python main.py
deactivate

# uv ์‚ฌ์šฉ
uv add fastapi uvicorn
uv run main.py

๊ฐ€์ƒํ™˜๊ฒฝ ๊ด€๋ฆฌ ํŒ

1. ํ”„๋กœ์ ํŠธ๋ณ„ ๊ฐ€์ƒํ™˜๊ฒฝ ๋ช…๋ช…

# ํ”„๋กœ์ ํŠธ๋ช… ํฌํ•จ
python3 -m venv myapp-venv
python3 -m venv blog-project-venv

2. requirements.txt ํ™œ์šฉ

# ํ˜„์žฌ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์ €์žฅ
pip freeze > requirements.txt

# ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ๋ณต์›
pip install -r requirements.txt

3. .gitignore ์„ค์ •

# Python ๊ฐ€์ƒํ™˜๊ฒฝ
venv/
env/
myproject-env/
*.pyc
__pycache__/

๊ถŒ์žฅ์‚ฌํ•ญ

  1. ๊ฐœ๋ฐœ ๋„๊ตฌ๋Š” pipx๋กœ: uv, black, flake8 ๋“ฑ
  2. ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ์€ ๊ฐ€์ƒํ™˜๊ฒฝ์œผ๋กœ: ๊ฐ ํ”„๋กœ์ ํŠธ๋ณ„ ํ™˜๊ฒฝ ๋ถ„๋ฆฌ
  3. ์‹œ์Šคํ…œ Python ๋ณดํ˜ธ: --break-system-packages ์‚ฌ์šฉ ์ง€์–‘
  4. IDE ์„ค์ •: VS Code, PyCharm ๋“ฑ์—์„œ ๊ฐ€์ƒํ™˜๊ฒฝ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์„ค์ •

๊ฒฐ๋ก 

Python ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์ƒํ™˜๊ฒฝ์€ ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. externally-managed-environment ์˜ค๋ฅ˜๋Š” ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์„ ์œ„ํ•œ ๋ณดํ˜ธ ์žฅ์น˜์ด๋ฉฐ, pipx๋‚˜ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ๋ฐฉ๋ฒ•์˜ ํŠน์„ฑ์„ ์ดํ•ดํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์„ฑ๊ฒฉ์— ๋งž๋Š” ์ ์ ˆํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋„๊ตฌ๋Š” pipx๋กœ, ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ์€ ๊ฐ€์ƒํ™˜๊ฒฝ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
LIST