๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Python

[Python] pyenv(ํŒŒ์ด์ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ), venv(ํŒŒ์ด์ฌ ๊ฐ€์ƒํ™˜๊ฒฝ ๊ด€๋ฆฌ)

by clolee 2025. 4. 25.

๐Ÿ 1. ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋ž€?

  • ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ฝ”๋“œ ๋ชจ์Œ(๋ชจ๋“ˆ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ).
  • pip(Python Package Installer)๋ฅผ ์‚ฌ์šฉํ•ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌ.
  • ์˜ˆ์‹œ: pip install requests โ†’ requests ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜.

๐Ÿ›  2. ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ฐ ๊ฐ€์ƒํ™˜๊ฒฝ ๋„๊ตฌ

1๏ธโƒฃ pyenv (ํŒŒ์ด์ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ)

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ด์ฌ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ณ  ์ „ํ™˜ํ•˜๋Š” ๋„๊ตฌ.
  • ์‹œ์Šคํ…œ ๊ธฐ๋ณธ ํŒŒ์ด์ฌ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ๋ฒ„์ „์„ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ์„ค์ • ๊ฐ€๋Šฅ.
  • ์œˆ๋„์šฐ: pyenv-win ์‚ฌ์šฉ (GitHub)
  • ๋งฅ: brew install pyenv๋กœ ์„ค์น˜ ๊ฐ€๋Šฅ.

โœ… ์ฃผ์š” ๋ช…๋ น์–ด

# pyenv ์„ค์น˜ (๋งฅ)
brew install pyenv

# pyenv ์„ค์น˜ (์œˆ๋„์šฐ)
git clone https://github.com/pyenv-win/pyenv-win.git ~/.pyenv

# ์„ค์น˜ ๊ฐ€๋Šฅํ•œ ํŒŒ์ด์ฌ ๋ฒ„์ „ ๋ชฉ๋ก ํ™•์ธ
pyenv install --list  
# ํŠน์ • ๋ฒ„์ „์˜ ํŒŒ์ด์ฌ ์„ค์น˜
pyenv install 3.12.3

# ์„ค์น˜๋œ ํŒŒ์ด์ฌ ๋ฒ„์ „, ํ˜„์žฌ ํ™œ์„ฑํ™”๋œ ํŒŒ์ด์ฌ ๋ฒ„์ „ ํ™•์ธ
pyenv versions

# ํŠน์ • ํด๋”์—์„œ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์ง€์ •
pyenv local 3.11.9

# ์ „์—ญ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์„ค์ •. ๊ธฐ๋ณธ ํŒŒ์ด์ฌ ๋ฒ„์ „์„ 3.12.3์œผ๋กœ ์„ค์ •
pyenv global 3.12.3


2๏ธโƒฃ venv (๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ)

  • ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ํŒจํ‚ค์ง€ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ํŒŒ์ด์ฌ ๋‚ด์žฅ ๋ชจ๋“ˆ.
  • ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›.

โœ… ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”

๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ์‹œ .venv์ฒ˜๋Ÿผ "."์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ ?

  • "."์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์ˆจ๊น€ ํŒŒ์ผ/ํด๋”๋กœ ์ธ์‹๋จ.
    โ†’ ํ„ฐ๋ฏธ๋„์—์„œ ls -la๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๋ณด์ž„(๋งฅ/๋ฆฌ๋ˆ…์Šค ๊ธฐ์ค€).
  • ๊ฐ€์ƒํ™˜๊ฒฝ ํด๋”๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉ๋จ.
    โ†’ .venv๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์—์„œ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ.
  • IDE(์˜ˆ: VSCode)์—์„œ ์ž๋™ ์ธ์‹์ด ์‰ฌ์›€.
    โ†’ VSCode๋Š” .venv ํด๋”๊ฐ€ ์žˆ์œผ๋ฉด ์ž๋™์œผ๋กœ ํ•ด๋‹น ํ™˜๊ฒฝ์„ ๊ฐ์ง€ํ•˜๊ณ  ์„ค์ •.

ํ•˜์ง€๋งŒ .venv๊ฐ€ ํ•„์ˆ˜๋Š” ์•„๋‹˜!

์•„๋ž˜์™€ ๊ฐ™์ด ํด๋”๋ช…์„ ์ž์œ ๋กญ๊ฒŒ ์ง€์ • ๊ฐ€๋Šฅ:

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ (์œˆ๋„์šฐ & ๋งฅ)
python -m venv .venv  # ".venv" ํด๋” ์ƒ์„ฑ (์ˆจ๊น€ํด๋”)
python -m venv myenv  # "myenv" ํด๋” ์ƒ์„ฑ (์ˆจ๊น€ ์•„๋‹˜)

# ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
# ์œˆ๋„์šฐ (cmd)
.venv\Scripts\activate

# ์œˆ๋„์šฐ (PowerShell)
.venv\Scripts\Activate.ps1

# ๋งฅ / ๋ฆฌ๋ˆ…์Šค
source .venv/bin/activate

# ๊ฐ€์ƒํ™˜๊ฒฝ ๋น„ํ™œ์„ฑํ™” (์œˆ๋„์šฐ & ๋งฅ ๋™์ผ)
deactivate

3๏ธโƒฃ pip๋กœ ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ๊ด€๋ฆฌ

  • requirements.txt ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ๊ธฐ๋กํ•˜๊ณ  ๊ณต์œ  ๊ฐ€๋Šฅ.
  • ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  requirements.txt๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ํ˜‘์—…์ด๋‚˜ ๋ฐฐํฌ ์‹œ ์œ ์šฉ.

โœ… ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์ €์žฅ & ์„ค์น˜. requirements.txt (ํŒจํ‚ค์ง€ ์˜์กด์„ฑ ๊ด€๋ฆฌ)

# ํ˜„์žฌ ํ™˜๊ฒฝ์—์„œ ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ํ™•์ธ
pip list

# ํŒจํ‚ค์ง€ ์„ค์น˜
# pip install ํŒจํ‚ค์ง€๋ช…
pip install pandas

# ํŠน์ • ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€ ์„ค์น˜
# pip install ํŒจํ‚ค์ง€๋ช…==๋ฒ„์ „๋ฒˆํ˜ธ
pip install requests==2.26.0  # requests ํŒจํ‚ค์ง€ 2.26.0 ๋ฒ„์ „ ์„ค์น˜

# ํŒจํ‚ค์ง€ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ
# pip install --upgrade ํŒจํ‚ค์ง€๋ช…
pip install --upgrade requests
# ํ˜„์žฌ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์ €์žฅ
pip freeze > requirements.txt

# requirements.txt ๊ธฐ๋ฐ˜์œผ๋กœ ํŒจํ‚ค์ง€ ์ผ๊ด„ ์„ค์น˜
pip install -r requirements.txt

๐Ÿ”Ž 3. ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€๋Š” ํ•ด๋‹น ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค!

์™œ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

  • pip install๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜„์žฌ ํ™œ์„ฑํ™”๋œ ํ™˜๊ฒฝ์— ์„ค์น˜๋จ.
  • ๊ฐ€์ƒํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•œ ํ›„ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด ํ•ด๋‹น ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ๋งŒ ์ ์šฉ๋จ.
  • ์ฆ‰, ํŠน์ • ๊ฐ€์ƒํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๊ณ  ์‹คํ–‰ํ•˜๋ฉด, ์›ํ•˜๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Œ.

โœ… ์„ค์น˜ํ•œ ํŒจํ‚ค์ง€ ์œ„์น˜ ํ™•์ธ

# ํ˜„์žฌ ํ™œ์„ฑํ™”๋œ ํŒŒ์ด์ฌ์ด ์–ด๋””์— ์žˆ๋Š”์ง€ ํ™•์ธ
which python  # ๋งฅ/Linux
where python  # ์œˆ๋„์šฐ

# ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ํ™•์ธ
pip list

โš ๏ธ ์ฃผ์˜ํ•  ์ 

  • ๊ฐ€์ƒํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•œ ์ƒํƒœ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ์‹œ์Šคํ…œ ์ „์ฒด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ ค๋ฉด ํ•ญ์ƒ venv ๋˜๋Š” pyenv ๋“ฑ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.

๐Ÿ’ก ์ •๋ฆฌ

  • pyenv โ†’ ํŒŒ์ด์ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ (์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ํŒŒ์ด์ฌ์„ ์‰ฝ๊ฒŒ ์ „ํ™˜)
  • venv โ†’ ํ”„๋กœ์ ํŠธ๋ณ„ ๊ฐ€์ƒํ™˜๊ฒฝ ๊ด€๋ฆฌ ๋„๊ตฌ
  • pip โ†’ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ
  • requirements.txt โ†’ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ์ €์žฅํ•˜๊ณ  ๊ณต์œ ํ•˜๋Š” ํŒŒ์ผ

์ฆ‰, ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ๋Š”:

  1. pyenv๋ฅผ ์‚ฌ์šฉํ•ด ์ ์ ˆํ•œ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์„ค์ • (ํ•„์š”ํ•œ ๊ฒฝ์šฐ)
  2. venv๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ  ํ™œ์„ฑํ™”
  3. pip install๋กœ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜
  4. requirements.txt๋กœ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌ

์ด๋Ÿฐ ์ˆœ์„œ๋กœ ํ•˜๋ฉด ์•ˆ์ •์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด! ๐Ÿš€

๐ŸŽฏ ์ตœ์ ์˜ ํ”„๋กœ์ ํŠธ ์„ธํŒ… ์˜ˆ์‹œ

# 1. pyenv๋กœ ํ•„์š”ํ•œ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์„ค์น˜ (์„ ํƒ ์‚ฌํ•ญ)
pyenv install 3.10.6
pyenv global 3.10.6  # ๊ธฐ๋ณธ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์„ค์ •

# 2. ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
python -m venv .venv

# 3. ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
source .venv/bin/activate  # (๋งฅ/Linux)
.venv\Scripts\activate     # (์œˆ๋„์šฐ CMD)

# 4. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜
pip install requests==2.26.0

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

# 6. (ํ˜‘์—… ์‹œ) ํŒจํ‚ค์ง€ ์„ค์น˜
pip install -r requirements.txt

๋Œ“๊ธ€