pyenv๋?
pyenv๋ ๋ค์ํ Python ๋ฒ์ ์ ์์ฝ๊ฒ ์ค์น, ๊ด๋ฆฌ, ์ ํํ ์ ์๊ฒ ํด์ฃผ๋ ๋ํ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ์ด๋ค.
์ฌ๋ฌ ํ๋ก์ ํธ์์ ์๋ก ๋ค๋ฅธ Python ๋ฒ์ ์ด ํ์ํ ๋ ๋ฒ์ ์ถฉ๋ ์์ด ๊ด๋ฆฌํ ์ ์๊ณ ์์คํ
์ ๊ธฐ๋ณธ ์ค์น๋ Python์ ๊ฑด๋๋ฆฌ์ง ์๊ณ , ์ฌ์ฉ์๋ณ๋ก ๋
๋ฆฝ์ ์ผ๋ก ์ด์์ด ๊ฐ๋ฅํ๋ค.
์ฃผ์ ํน์ง
- ์ฌ๋ฌ Python ๋ฒ์ ์ค์น ๋ฐ ์ ํ (์: 2.7, 3.8, 3.12 ๋ฑ)
- ๋๋ ํ ๋ฆฌ๋ณ(local), ์ ์ญ(global), ์ ธ(session) ๋จ์๋ก Python ๋ฒ์ ์ง์
.python-version
ํ์ผ๋ก ํ๋ก์ ํธ๋ณ Python ๋ฒ์ ๊ณ ์ - ๋ค์ํ ํ์ Python(CPython, Anaconda, PyPy ๋ฑ)๋ ์ง์
pyenv-virtualenv๋?
pyenv-virtualenv๋ pyenv์ ํ๋ฌ๊ทธ์ธ์ผ๋ก, Python ๊ฐ์ํ๊ฒฝ(virtual environment) ๊ธฐ๋ฅ์ ์ถ๊ฐ ์ ๊ณตํ๋ค
๊ฐ Python ๋ฒ์ ๋ณ๋ก ์์ ํ ๊ฒฉ๋ฆฌ๋ ํจํค์ง ํ๊ฒฝ์ ๋ง๋ค ์ ์๋ค
์ฃผ์ ํน์ง
- pyenv๋ก ์ค์นํ ๊ฐ Python ๋ฒ์ ์ ๋ํด ๋ณ๋์ ๊ฐ์ํ๊ฒฝ ์์ฑ ๋ฐ ์ ํ ๊ฐ๋ฅ
- ๊ฐ์ํ๊ฒฝ๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ํจํค์ง๋ฅผ ์ค์นยท์ฌ์ฉ, ํ๋ก์ ํธ๋ณ ์์กด์ฑ ์ถฉ๋ ์ต์ํ
- ๋๋ ํ ๋ฆฌ๋ณ๋ก ํน์ ๊ฐ์ํ๊ฒฝ ์๋ ํ์ฑํ ๊ฐ๋ฅ (์๋ ์ ํ)
pyenv vs conda: ์ธ์ ์ด๋ค ๋๊ตฌ๋ฅผ ์ธ๊น?
๋ณดํต ๊ฐ์ํ๊ฒฝ์ ๊ด๋ฆฌํ๋ ๋๊ตฌ ์ค ํ๋๋ก conda๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฐจ์ด์ ์ ์์๋ณด์
conda๋?
conda๋ Anaconda/Miniconda ๋ฐฐํฌํ์์ ์ ๊ณตํ๋ ํ๊ฒฝ ๋ฐ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ์ด๋ค.
Python๋ฟ ์๋๋ผ R, Julia ๋ฑ ๋ค์ํ ์ธ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํจํค์ง๊น์ง ํ ๋ฒ์ ํตํฉ ๊ด๋ฆฌ ๊ฐ๋ฅํ๊ณ
ํนํ ๊ณผํ, ๋ฐ์ดํฐ๋ถ์, ๋จธ์ ๋ฌ๋ ๋ถ์ผ์์ ๋ํ ํจํค์ง ์ค์นยทํธํ์ฑ์ ๊ฐ์ ์ ๊ฐ๊ณ ์๋ค.
๋ํ conda
๋ผ๋ ๋ช
๋ น์ด๋ฅผ ํตํด pip
๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์ ์ญํ ๋ ํ ์ ์๋ค
์ฆ, ํจํค์ง ๊ด๋ฆฌ + Python ๋ฒ์ ๊ด๋ฆฌ + ๊ฐ์ํ๊ฒฝ ๊ด๋ฆฌ + ์ถ๊ฐ ๊ณผํ, ๋ฐ์ดํฐ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊น์ง ๋ชจ๋ ์ ๊ณตํด์ค๋ค.
pyenv, conda ๋น๊ต
๊ตฌ๋ถ | pyenv (+pyenv-virtualenv) | conda |
---|---|---|
๊ด๋ฆฌ ๋์ | Python ๋ฒ์ / ๊ฐ์ํ๊ฒฝ | Python / R / ํจํค์ง / ํ๊ฒฝ ํตํฉ |
ํ๊ฒฝ ๊ฒฉ๋ฆฌ | venv / virtualenv๋ก ๊ฒฉ๋ฆฌ | ํ๊ฒฝ ๋จ์๋ก ์์ ๊ฒฉ๋ฆฌ |
ํจํค์ง ๊ด๋ฆฌ | pip | conda / pip ๋ชจ๋ ์ง์ |
๊ฐ์ | ๊ฐ๋ณ๊ณ OS ์์คํ ์ํฅ ์์ | ํจํค์ง ํธํ์ฑ, ๋ํ ๊ณผํ ํจํค์ง ๊ฐ์ |
๋จ์ | ํจํค์ง ์์กด์ฑ ์ถฉ๋ ๋ณ๋ ๊ด๋ฆฌ ํ์ | ๋ฌด๊ฒ๊ณ ๋์คํฌ ์ฌ์ฉ ๋ง์ ์ ์์ |
์ถ์ฒ ๊ธฐ์ค
-
์ฌ๋ฌ ๋ฒ์ ์ Python์ ๊ฐ๋ณ๊ฒ ๊ด๋ฆฌํ๊ณ , ํ๋ก์ ํธ๋ณ๋ก ๋ ๋ฆฝ์ ์ธ ๊ฐ์ํ๊ฒฝ์ ๊ตฌ์ฑํ๊ณ ์ถ๋ค โ pyenv + pyenv-virtualenv
- ๊ฐ๋ฐ, ์น, ์๋ํ ๋ฑ ์ผ๋ฐ์ ์ธ Python ํ๋ก์ ํธ์๋ ์ด ์กฐํฉ์ด ๊ฐ์ฅ ์ฌํํ๊ณ ๋น ๋ฅด๋ค.
-
๋ฐ์ดํฐ ๋ถ์์ด๋ ๋จธ์ ๋ฌ๋์ฒ๋ผ ๋ณต์กํ ํจํค์ง ์์กด์ฑ, ย ๋๋ Python ์ธ์๋ R, Julia ๋ฑ ๋ค์ํ ์ธ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ ๋ฒ์ ๊ด๋ฆฌํด์ผ ํ๋ค โconda
- ๋ํ ๊ณผํ ํจํค์ง, ๋ค์ํ OS ํ๊ฒฝ์์์ ํธํ์ฑ, ์ค์น ํธ์์ฑ์ด ์ค์ํ ์ํฉ์ conda๋ฅผ ์ถ์ฒํ๋ค.
pyenv ๋ช ๋ น์ด
-
pyenv ์ค์น (macOS)
brew install pyenv
-
์ ธ์ pyenv ํ๊ฒฝ ์ ์ฉ (.zshrc) : ์ฐธ๊ณ
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init - zsh)"' >> ~/.zshrc
-
์ค์น ๊ฐ๋ฅํ Python ๋ชฉ๋ก ๋ณด๊ธฐ
pyenv install --list
-
Python ๋ฒ์ ์ค์น
pyenv install 3.12.3
-
์ค์น๋ Python ๋ชฉ๋ก ๋ณด๊ธฐ
pyenv versions
-
๊ธฐ๋ณธ(global) Python ๋ฒ์ ์ค์
pyenv global 3.12.3
-
๋๋ ํ ๋ฆฌ(local)๋ณ Python ๋ฒ์ ์ค์
pyenv local 3.10.13
-
ํ์ฌ ์ ธ(session)์์๋ง ๋ฒ์ ์ค์
pyenv shell 3.9.18
-
ํ์ฌ ์ฌ์ฉ ์ค์ธ Python ๋ฒ์ ํ์ธ
pyenv version
-
pyenv๋ก ์ค์นํ Python ๊ฒฝ๋ก ํ์ธ
pyenv which python
pyenv-virtualenv ๋ช ๋ น์ด
-
pyenv-virtualenv ์ค์น (macOS)
brew install pyenv-virtualenv
-
shell์ pyenv-virtualenv ํ๊ฒฝ ์ ์ฉ
eval "$(pyenv virtualenv-init -)"
-
๊ฐ์ํ๊ฒฝ ์์ฑ
pyenv virtualenv 3.11.8 myenv311
-
๊ฐ์ํ๊ฒฝ ๋ชฉ๋ก ๋ณด๊ธฐ
pyenv virtualenvs
-
๊ฐ์ํ๊ฒฝ ์ ๊ฑฐ
pyenv uninstall myenv311
-
๋๋ ํ ๋ฆฌ์ ๊ฐ์ํ๊ฒฝ ์ง์
pyenv local myenv311