๐ 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 ๋ก ์ค์น ์ ํ
๋๊ธ