pyenv, venv ์ ๋ฆฌ
ํ์ด์ฌ์ ์ค์นํ๋ฉด์ ์๊ฒ ๋ ๋ด์ฉ์ด ์์ต๋๋ค.
๋ฐ๋ก pyenv, venv์ด๋ค. ์ด ๋์ ์ฉ๋๋ ์์ง๋ง ๋ช ํํ์ง ๋ชปํด์ ์ ๋ฆฌํ๊ณ ํฉ๋๋ค.
1. pyenv
๋ชฉ์ : ๋ค์ํ Python ์ธํฐํ๋ฆฌํฐ ๋ฒ์ ์ ์ค์น•๊ด๋ฆฌํ๊ณ , ์ ์ญ(global)•ํ๋ก์ ํธ(local)•์(shell) ๋จ์๋ก ๋ฒ์ ์ ์ ํํ ์ ์๋ ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค.
์ค์น: brew๋ก ์ค์น๋ฅผ ์งํํ์ต๋๋ค.
brew install pyenv
์ฃผ์๊ธฐ๋ฅ:
- pyenv install <version>์ผ๋ก ์ํ๋ Python ๋ฒ์ ์ค์น
- pyenv global/local/shell <version> ์ผ๋ก ํ์ฑ ๋ฒ์ ์ ํ
- ํ๋ฌ๊ทธ์ธ (์: pyenv-virtualenv)์ ํตํด ๊ฐ์ํ๊ฒฝ ํตํฉ ๊ด๋ฆฌ๋ ๊ฐ๋ฅ
์์:
global
# 1) ๊ธ๋ก๋ฒ(default) ๋ฒ์ ์ค์
# ์์คํ
์ ์ฒด(๋ก๊ทธ์ธ ์ธ์
)์์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ Python ๋ฒ์ ์ 3.10.6์ผ๋ก ์ง์
$ pyenv global 3.10.6
$ python -V
Python 3.10.6
local
# 2) ๋ก์ปฌ(project) ๋ฒ์ ์ค์
# ํ์ฌ ๋๋ ํฐ๋ฆฌ(my-project) ๋ฐ ๊ทธ ํ์์์๋ง Python 3.8.0์ ์ฌ์ฉ
$ cd my-project
$ pyenv local 3.8.0
# ์ด ๋ช
๋ น ์คํ ์ my-project/.python-version ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
$ python -V
Python 3.8.0
shell
# 3) ์(session) ์ ์ฉ ๋ฒ์ ์ค์
# ํ์ฌ ํฐ๋ฏธ๋ ์ธ์
์์๋ง ์ ์ Python 3.9.1์ ์ฌ์ฉํ๊ณ , ์ธ์
์ข
๋ฃ๋ ์ฌ๋ก๊ทธ์ธ ์ ํด์
$ pyenv shell 3.9.1
$ python -V
Python 3.9.1
# ์๋ ๋ฒ์ ์ผ๋ก ๋ณต๊ทํ๋ ค๋ฉด
$ pyenv shell --unset
$ python -V
# (๊ธ๋ก๋ฒ ๋๋ ๋ก์ปฌ์ ์ง์ ๋ ๋ฒ์ ์ผ๋ก ๋์๊ฐ๋๋ค)
2. venv
๋ชฉ์ : Python 3.3์ด์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋ ๊ฐ์ํ๊ฒฝ ์์ฑ ๋๊ตฌ๋ก, ํน์ python ์ธํฐํ๋ฆฌํฐ ๊ธฐ๋ฐ์ ๋ ๋ฆฝ๋ ํจํค์ง ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ค์น: ๋ณ๋ ์ค์น ๋ถํ์(python3 -m venv <env> ๋ช ๋ น ์ฌ์ฉ)
์ฃผ์ ๊ธฐ๋ฅ:
- python -m venv ~/myenv (~/myenv ๋ก ํ๋ฉด home ํ์์ ์์ฑ ๋จ ์ํ๋ ๊ฒฝ๋ก๋ก ํด์ฃผ๋ฉด ๋จ)
- ์คํ
- source ~/myenv/bin/activate
- ์ข
๋ฃ
- deactivate
3. pyenv vs venv ๋น๊ต
๊ตฌ๋ถ | pyenv | venv |
์ญํ | python ๋ฒ์ ๊ด๋ฆฌ | python ํจํค์ง ๊ฒฉ๋ฆฌ•๊ฐ์ํ๊ฒฝ ์์ฑ |
๋ฒ์ | ์ ์ญ/ํ๋ก์ ํธ/์ ๋จ์ ์ธํฐํ๋ฆฌํฐ ์ ํ | ๋จ์ผ ํ๋ก์ ํธ ๋ด์์ ํจํค์ง ๋ ๋ฆฝ |
์ค์น | Github -> ์ ์ค์ ํ์ผ์ ์ด๊ธฐํ ์คํฌ๋ฆฝํธ ์ถ๊ฐ | python 3.3+ ๊ธฐ๋ณธ ๋ด์ฅ (-m venv) |
ํ์ฉ ์ | pyenv install 3.10.6 -> pyenv local 3.10.6 | python -m venv .venf -> source .venv/bin/activate |
ํ์ฅ์ฑ | ํ๋ฌ๊ทธ์ธ ํตํด virtualenv ๋ฑ๊ณผ ์ฐ๋ ๊ฐ๋ฅ | ์ต์ ๊ธฐ๋ฅ, ๋ณต์กํ ์ต์ ์ virtualenv ๊ถ์ฅ |
4. ์ถ๊ฐ ๋ด์ฉ (virtualenv)
Virtualenv:
virtualenv๋ python ํ๋ก์ ํธ๋ง๋ค ๋ ๋ฆฝ์ ์คํ ํ๊ฒฝ์ ๋ง๋ค์ด ์ฃผ๋ ์๋ํํฐ ๋๊ตฌ ์ ๋๋ค. ์์คํ ์ ์ฒด์ ์ค์น๋ Python๊ณผ๋ ๋ณ๋๋ก, ํน์ ๋ฒ์ ์ Python ์ธํฐํ๋ฆฌํฐ์ pip•setyptolls•wheel ๊ฐ์ ํ์ ํจํค์ง๋ฅผ ๊ฒฉ๋ฆฌ๋ ๋๋ ํฐ๋ฆฌ์ ์ค์นํด์ค๋๋ค. ์ด๋ป๊ฒ ๋ณด๋ฉด venv์ ๋น์ทํ ์ ์์ง๋ง venv๋ณด๋ค ๋ ๋ณต์กํ ์ต์ ์ ํ์ฉํ ์ ์์ต๋๋ค.
ํน์ง:
- ์ ์ญ(Global) ์ค์น๋ฅผ ํผํ๊ณ , ํ๋ก์ ํธ๋ณ๋ก ์๋ก ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ๊ณต์กด์ํฌ ์ ์์ต๋๋ค.
- Python 2.x/3.x ๋ชจ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
'DevSecOps > python, ๋ฐ์ดํฐ๋ถ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
macos pyenv์์์ _tkinter ์ด์ (0) | 2025.06.13 |
---|---|
ํผ์ด์จ ์๊ด๊ณ์์ ๊ณต๋ถ์ฐ (0) | 2025.02.12 |
์คํ ๋ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ฃผ ์ฌ์ฉ ๋๋ ๋ชจ๋ (2) | 2024.10.17 |
๋๊ธ