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

[Python]macOS์—์„œ Python ์ตœ์‹  LTS ๋ฒ„์ „์œผ๋กœ ์„ค์น˜์™€ `python` ๋ช…๋ น์–ด๋กœ ์‚ฌ์šฉ (์—…๋ฐ์ดํŠธ ๋ฒ„์ „)

by clolee 2025. 5. 9.

๐Ÿ“Œ macOS์—์„œ Python์„ ์ตœ์‹  LTS ๋ฒ„์ „์œผ๋กœ ์„ค์น˜ํ•˜๊ณ  python ๋ช…๋ น์–ด๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ• ์ •๋ฆฌ


โœ… 1. macOS ๊ธฐ๋ณธ Python์€ ์–ด๋–ค๊ฐ€์š”?

  • macOS์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ /usr/bin/python3 ๊ฒฝ๋กœ์— Python 3์ด ์„ค์น˜๋˜์–ด ์žˆ์Œ
  • ์ด๋Š” Xcode Command Line Tools๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์ž๋™์œผ๋กœ ํฌํ•จ๋˜๋ฉฐ, ์‹œ์Šคํ…œ ๋ณดํ˜ธ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋ฐ์ดํŠธ/๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ค์›€
  • /usr/bin/python์€ ๊ตฌ๋ฒ„์ „ Python 2์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ macOS 12 ์ด์ƒ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ฑฐ๋˜๊ธฐ๋„ ํ•จ

โœ… 2. Homebrew๋กœ Python ์ตœ์‹  LTS ์„ค์น˜ (๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹)

๐Ÿ”น ์„ค์น˜ ๋ฐฉ๋ฒ•

brew install python
  • ์ด ๋ช…๋ น์–ด๋Š” ํ•ญ์ƒ Python์˜ ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „ (LTS) ๋ฅผ ์„ค์น˜ํ•จ
  • ์˜ˆ: ํ˜„์žฌ ๊ธฐ์ค€ Python 3.12.x
  • Homebrew๋Š” LTS๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „์„ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์ด ์„ค์น˜๋จ

๐Ÿ”น ์„ค์น˜ ํ™•์ธ

which python3
# → /opt/homebrew/bin/python3 (Apple Silicon) ๋˜๋Š” /usr/local/bin/python3 (Intel Mac)

python3 --version
# → Python 3.12.3 (์˜ˆ์‹œ)

โœ… 3. python ๋ช…๋ น์–ด๋ฅผ python3๋กœ ๋Œ€์ฒดํ•˜๊ธฐ (Homebrew ๋ฐฉ์‹)

macOS์—์„œ๋Š” ์—ฌ์ „ํžˆ python ๋ช…๋ น์–ด๊ฐ€ ๋น„์–ด์žˆ๊ฑฐ๋‚˜ Python 2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜์ฒ˜๋Ÿผ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น ๋ฐฉ๋ฒ•: ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์„ค์ •

# ๋ฐฑ์—… (์ด๋ฏธ ์žˆ๋‹ค๋ฉด)
sudo mv /usr/local/bin/python /usr/local/bin/python_backup 2>/dev/null

# python → python3 ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ
ln -sfn $(which python3) /usr/local/bin/python

# ์•ˆ๋˜๋ฉด (ln: /usr/local/bin/python: Permission denied)
sudo ln -sfn $(which python3) /usr/local/bin/python

๐Ÿ”น ํ™•์ธ

which python
# → /usr/local/bin/python

python --version
# → Python 3.12.3

โœ… 4. (๋Œ€์•ˆ) pyenv๋กœ LTS ์ตœ์‹  ๋ฒ„์ „ ์„ค์น˜ ๋ฐ python ์ž๋™ ์„ค์ • (๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ)

๐Ÿ”น pyenv ์„ค์น˜

brew install pyenv

๐Ÿ”น ์ตœ์‹  LTS ๋ฒ„์ „ ์ž๋™ ์„ค์น˜

latest=$(pyenv install --list | grep -E '^ 3\.[0-9]+\.[0-9]+$' | tail -n 1 | xargs)
pyenv install "$latest"
pyenv global "$latest"

๐Ÿ”น ์…ธ ํ™˜๊ฒฝ ์„ค์ • (zsh ๊ธฐ์ค€)

echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zprofile
source ~/.zshrc

๐Ÿ”น python ๋ช…๋ น์–ด๋Š” ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ๋จ

  • pyenv๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ~/.pyenv/shims/python์„ ํ†ตํ•ด python, python3, pip ๋“ฑ์„ ์ž๋™ ์—ฐ๊ฒฐ
  • ๋ณ„๋„ ln -s ์ž‘์—… ์—†์ด๋„ python ๋ช…๋ น์–ด๊ฐ€ ์„ ํƒ๋œ ๋ฒ„์ „์„ ๊ฐ€๋ฆฌํ‚ด
  • ๋‹จ, ์œ„ ์…ธ ์ดˆ๊ธฐํ™” ์„ค์ •(eval ...)์ด ๊ผญ ๋˜์–ด ์žˆ์–ด์•ผ ํ•จ

๐ŸŸก Homebrew vs pyenv ๋น„๊ต ์š”์•ฝ

ํ•ญ๋ชฉ Homebrew pyenv
์„ค์น˜ ๋ชฉ์  ์ตœ์‹  LTS ์„ค์น˜ ์—ฌ๋Ÿฌ ๋ฒ„์ „ ๊ด€๋ฆฌ
์„ค์น˜ ๋ช…๋ น brew install python pyenv install 3.x.x
๋ฒ„์ „ ๋ช…์‹œ ์—†์ด ์„ค์น˜ โœ… ๊ฐ€๋Šฅ โŒ ์ง์ ‘ ๋ฒ„์ „ ์ง€์ • ํ•„์š” (์Šคํฌ๋ฆฝํŠธ๋กœ ์šฐํšŒ ๊ฐ€๋Šฅ)
python ๋ช…๋ น ์ž๋™ํ™” โŒ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํ•„์š” โœ… ์ž๋™ shim ์ฒ˜๋ฆฌ
์ถ”์ฒœ ์ƒํ™ฉ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž, ๋‹จ์ผ ๋ฒ„์ „ ํ”„๋กœ์ ํŠธ๋ณ„ ๋ฒ„์ „ ๋ถ„๋ฆฌ ํ•„์š”ํ•  ๋•Œ

โœ… ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์กฐํ•ฉ์€?

# ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ธฐ์ค€ ์ถ”์ฒœ ํ๋ฆ„
brew install python
ln -sfn $(which python3) /usr/local/bin/python

์ดํ›„์—๋Š” python, python3, pip, pip3 ๋ชจ๋‘ ์ตœ์‹  Python ๋ฒ„์ „์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.


๐Ÿ“Œ ์ถ”๊ฐ€ ํŒ: .zshrc, .bash_profile์— ์•„๋ž˜ ์„ค์ •์ด ์—†์œผ๋ฉด pyenv๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

export PATH="$HOME/.pyenv/shims:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"

์ฐธ๊ณ : pyenv ๋กœ ์„ค์น˜ ์ „ํ™˜

2025.10.17 - [Setting] - [Python] Apple Silicon Mac์—์„œ Homebrew Python → pyenv ์ „ํ™˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

 

๋Œ“๊ธ€