KR_VirtualEnv - somaz94/python-study GitHub Wiki

Python ๊ฐ€์ƒํ™˜๊ฒฝ ๊ฐœ๋… ์ •๋ฆฌ


1๏ธโƒฃ ๊ฐ€์ƒํ™˜๊ฒฝ ๊ธฐ์ดˆ

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

๊ฐ€์ƒํ™˜๊ฒฝ์˜ ์ฃผ์š” ๋ชฉ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • ํ”„๋กœ์ ํŠธ๋ณ„ ์˜์กด์„ฑ ๊ฒฉ๋ฆฌ
  • ์‹œ์Šคํ…œ ํŒŒ์ด์ฌ ํ™˜๊ฒฝ ๋ณดํ˜ธ
  • ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ œ๊ณต
  • ๋ฐฐํฌ ํ™˜๊ฒฝ๊ณผ์˜ ์ผ๊ด€์„ฑ ์œ ์ง€
# venv ์ƒ์„ฑ
python -m venv myenv

# ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
# Windows
myenv\Scripts\activate
# Linux/Mac
source myenv/bin/activate

# ๊ฐ€์ƒํ™˜๊ฒฝ ๋น„ํ™œ์„ฑํ™”
deactivate

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

# ํŒจํ‚ค์ง€ ์„ค์น˜
pip install package_name

# ํŠน์ • ๋ฒ„์ „ ์„ค์น˜
pip install package_name==1.0.0

# ํŒจํ‚ค์ง€ ์—…๊ทธ๋ ˆ์ด๋“œ
pip install --upgrade package_name

# ์š”๊ตฌ์‚ฌํ•ญ ํŒŒ์ผ ์ƒ์„ฑ
pip freeze > requirements.txt

# ์š”๊ตฌ์‚ฌํ•ญ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์„ค์น˜
pip install -r requirements.txt

# ํŒจํ‚ค์ง€ ์ œ๊ฑฐ
pip uninstall package_name

โœ… ํŠน์ง•:

  • ๋…๋ฆฝ๋œ ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ํ™˜๊ฒฝ ์ œ๊ณต
  • ํ”„๋กœ์ ํŠธ๋ณ„ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋กœ ์˜์กด์„ฑ ์ถฉ๋Œ ๋ฐฉ์ง€
  • ์‹œ์Šคํ…œ ํŒŒ์ด์ฌ ํ™˜๊ฒฝ ์˜ค์—ผ ๋ฐฉ์ง€
  • ํŒจํ‚ค์ง€ ๋ฒ„์ „ ๋ช…์‹œ๋ฅผ ํ†ตํ•œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • ํ”„๋กœ์ ํŠธ ์ด์‹์„ฑ ํ–ฅ์ƒ


2๏ธโƒฃ virtualenvwrapper ์‚ฌ์šฉ

virtualenvwrapper๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ, ์‚ญ์ œ, ์ „ํ™˜ ๋“ฑ์˜ ์ž‘์—…์„ ๊ฐ„์†Œํ™”ํ•ด์ค€๋‹ค.

# virtualenvwrapper ์„ค์น˜
pip install virtualenvwrapper
# Windows์˜ ๊ฒฝ์šฐ
pip install virtualenvwrapper-win

# ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • (.bashrc ๋˜๋Š” .zshrc์— ์ถ”๊ฐ€)
export WORKON_HOME=$HOME/.virtualenvs  # ๊ฐ€์ƒํ™˜๊ฒฝ ์ €์žฅ ์œ„์น˜
export PROJECT_HOME=$HOME/projects     # ํ”„๋กœ์ ํŠธ ์ €์žฅ ์œ„์น˜
source /usr/local/bin/virtualenvwrapper.sh

# ์ƒˆ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
mkvirtualenv myproject

# ํŠน์ • ํŒŒ์ด์ฌ ๋ฒ„์ „์œผ๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
mkvirtualenv -p python3.8 myproject

# ๊ฐ€์ƒํ™˜๊ฒฝ ๋ชฉ๋ก ๋ณด๊ธฐ
workon

# ํŠน์ • ๊ฐ€์ƒํ™˜๊ฒฝ์œผ๋กœ ์ „ํ™˜
workon myproject

# ๊ฐ€์ƒํ™˜๊ฒฝ ์‚ญ์ œ
rmvirtualenv myproject

# ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์™€ ๊ฐ€์ƒํ™˜๊ฒฝ ์—ฐ๊ฒฐ
mkproject newproject

# ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ”„๋กœ์ ํŠธ๋กœ ์„ค์ •
setvirtualenvproject

# ๊ฐ€์ƒํ™˜๊ฒฝ ๋ณต์ œ
cpvirtualenv source_env target_env

โœ… ํŠน์ง•:

  • ์ค‘์•™ ์ง‘์ค‘์‹ ๊ฐ€์ƒํ™˜๊ฒฝ ๊ด€๋ฆฌ
  • ํ™˜๊ฒฝ ๊ฐ„ ๋น ๋ฅธ ์ „ํ™˜ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์™€ ๊ฐ€์ƒํ™˜๊ฒฝ ์—ฐ๋™
  • ํ™˜๊ฒฝ ์„ค์ • ์ž๋™ํ™” (postactivate, predeactivate ํ›…)
  • ํ™˜๊ฒฝ ๋ชฉ๋ก ๊ด€๋ฆฌ ๋ฐ ํƒ์ƒ‰ ์šฉ์ด
  • ํƒญ ์™„์„ฑ ์ง€์›์œผ๋กœ ๋ช…๋ น์–ด ์ž…๋ ฅ ํŽธ์˜์„ฑ ํ–ฅ์ƒ


3๏ธโƒฃ Poetry ์‚ฌ์šฉํ•˜๊ธฐ

Poetry๋Š” ํ˜„๋Œ€์ ์ธ ํŒŒ์ด์ฌ ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋ฐ ํŒจํ‚ค์ง• ๋„๊ตฌ์ด๋‹ค. ํŒจํ‚ค์ง€ ๋ฒ„์ „ ํ•ด๊ฒฐ, ์˜์กด์„ฑ ๊ด€๋ฆฌ, ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ์— ์ด๋ฅด๋Š” ์ „์ฒด ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ง€์›ํ•œ๋‹ค.

Poetry์˜ ํ•ต์‹ฌ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • ์ •ํ™•ํ•œ ์˜์กด์„ฑ ํ•ด๊ฒฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๊ฐœ๋ฐœ๊ณผ ํ”„๋กœ๋•์…˜ ์˜์กด์„ฑ ๊ตฌ๋ถ„
  • ๋ฝ ํŒŒ์ผ์„ ํ†ตํ•œ ์˜์กด์„ฑ ์ž ๊ธˆ
  • ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ๊ธฐ๋Šฅ
# Poetry ์„ค์น˜
curl -sSL https://install.python-poetry.org | python3 -

# ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
poetry new myproject

# ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— Poetry ์ดˆ๊ธฐํ™”
poetry init

# ์˜์กด์„ฑ ์ถ”๊ฐ€
poetry add requests

# ๊ฐœ๋ฐœ ์˜์กด์„ฑ ์ถ”๊ฐ€
poetry add pytest --dev

# ์˜์กด์„ฑ ์„ค์น˜
poetry install

# ํ”„๋กœ๋•์…˜ ์˜์กด์„ฑ๋งŒ ์„ค์น˜
poetry install --no-dev

# ๊ฐ€์ƒํ™˜๊ฒฝ ์‹คํ–‰
poetry shell

# ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
poetry run python script.py

# ์˜์กด์„ฑ ์—…๋ฐ์ดํŠธ
poetry update

# ํ˜„์žฌ ์˜์กด์„ฑ ๋ณด๊ธฐ
poetry show

# ์ทจ์•ฝ์  ๊ฒ€์‚ฌ
poetry check

# ํŒจํ‚ค์ง€ ๋นŒ๋“œ
poetry build

# ํŒจํ‚ค์ง€ ๊ฒŒ์‹œ
poetry publish

โœ… ํŠน์ง•:

  • pyproject.toml ํŒŒ์ผ์„ ์‚ฌ์šฉํ•œ ํ‘œ์ค€ํ™”๋œ ๊ตฌ์„ฑ
  • ์˜์กด์„ฑ ๋ฒ„์ „ ์ถฉ๋Œ ์ž๋™ ํ•ด๊ฒฐ
  • ์ •ํ™•ํ•˜๊ณ  ๊ฒฐ์ •์ ์ธ ์ž ๊ธˆ ํŒŒ์ผ ์ƒ์„ฑ
  • ํ†ตํ•ฉ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ํŒจํ‚ค์ง€ ๋ฐฐํฌ ๊ฐ„์†Œํ™”
  • ํ™˜๊ฒฝ ๊ฒฉ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฐ€์ƒํ™˜๊ฒฝ ์ž๋™ ์ƒ์„ฑ
  • ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ ์‹œ๊ฐํ™” ์ง€์›
  • ๊ตฌ์กฐํ™”๋œ ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ ์ œ๊ณต


4๏ธโƒฃ Pipenv ์‚ฌ์šฉํ•˜๊ธฐ

Pipenv๋Š” pip์™€ virtualenv๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ณ„ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•œ ๋„๊ตฌ์ด๋‹ค. Pipfile๊ณผ Pipfile.lock์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜์กด์„ฑ์„ ๋ช…์‹œํ•˜๊ณ  ์ถ”์ ํ•œ๋‹ค.

Pipenv์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • ์ž๋™ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ
  • ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ์ œ๊ฑฐ ์‹œ Pipfile ์ž๋™ ์—…๋ฐ์ดํŠธ
  • ํ•˜์œ„ ์˜์กด์„ฑ์„ ํฌํ•จํ•œ ๋ชจ๋“  ํŒจํ‚ค์ง€์˜ ํ•ด์‹œ ๊ฒ€์ฆ
  • ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ ์‹œ๊ฐํ™”
# Pipenv ์„ค์น˜
pip install pipenv

# ์ƒˆ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํŒจํ‚ค์ง€ ์„ค์น˜
pipenv install requests

# ๊ฐœ๋ฐœ ์˜์กด์„ฑ ์„ค์น˜
pipenv install pytest --dev

# ํŠน์ • ๋ฒ„์ „ ์„ค์น˜
pipenv install requests==2.25.1

# ๊ฐ€์ƒํ™˜๊ฒฝ ์‹คํ–‰
pipenv shell

# ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
pipenv run python script.py

# ์˜์กด์„ฑ ์ž ๊ธˆ
pipenv lock

# ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ ํ™•์ธ
pipenv graph

# ์ทจ์•ฝ์  ๊ฒ€์‚ฌ
pipenv check

# ๊ฐ€์ƒํ™˜๊ฒฝ ์œ„์น˜ ํ™•์ธ
pipenv --venv

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ œ๊ฑฐ
pipenv --rm

โœ… ํŠน์ง•:

  • Pipfile๊ณผ Pipfile.lock์œผ๋กœ ์˜์กด์„ฑ ๋ช…ํ™•ํžˆ ๋ฌธ์„œํ™”
  • ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜ ์˜์กด์„ฑ ๋ถ„๋ฆฌ
  • ๋ณด์•ˆ ์ทจ์•ฝ์  ์ž๋™ ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ
  • ์œ ์—ฐํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ (.env ํŒŒ์ผ ์ž๋™ ๋กœ๋”ฉ)
  • ํ•˜์œ„ ์˜์กด์„ฑ ํ•ด์‹œ ๊ฒ€์ฆ์œผ๋กœ ์•ˆ์ „ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜
  • pip์™€ virtualenv ๊ธฐ๋Šฅ ํ†ตํ•ฉ์œผ๋กœ ์ผ๊ด€๋œ ์›Œํฌํ”Œ๋กœ์šฐ
  • ์˜์กด์„ฑ ์ถ”๊ฐ€/์ œ๊ฑฐ ์‹œ ์˜์กด์„ฑ ํŠธ๋ฆฌ ์ž๋™ ์—…๋ฐ์ดํŠธ


5๏ธโƒฃ Conda ํ™˜๊ฒฝ ๊ด€๋ฆฌ

Conda๋Š” ์˜คํ”ˆ์†Œ์Šค ํŒจํ‚ค์ง€ ๋ฐ ํ™˜๊ฒฝ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ, ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๋ฐ ๊ณผํ•™ ์ปดํ“จํŒ… ๋ถ„์•ผ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค. ๋‹ค์–‘ํ•œ ์–ธ์–ด(Python, R ๋“ฑ)์˜ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Conda์˜ ์ฃผ์š” ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง€ ๋ฐฐํฌ๋กœ ๋ณต์žกํ•œ ๊ณผํ•™ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ„ํŽธ ์„ค์น˜
  • ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ง€์›
  • ํ”Œ๋žซํผ ๊ฐ„ ์ผ๊ด€๋œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฑ„๋„์„ ํ†ตํ•œ ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€ ์ œ๊ณต
# Conda ์„ค์น˜ (Miniconda ๋˜๋Š” Anaconda)
# https://docs.conda.io/en/latest/miniconda.html

# Conda ํ™˜๊ฒฝ ์ƒ์„ฑ
conda create --name myenv python=3.8

# ํ™˜๊ฒฝ ํ™œ์„ฑํ™”
conda activate myenv

# ํ™˜๊ฒฝ ๋น„ํ™œ์„ฑํ™”
conda deactivate

# ํŒจํ‚ค์ง€ ์„ค์น˜
conda install numpy pandas

# ํŠน์ • ์ฑ„๋„์—์„œ ํŒจํ‚ค์ง€ ์„ค์น˜
conda install -c conda-forge matplotlib

# ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ
conda update numpy

# ํ™˜๊ฒฝ ๋‚ด ๋ชจ๋“  ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ
conda update --all

# ํ™˜๊ฒฝ ๋ชฉ๋ก ํ™•์ธ
conda env list

# ํŒจํ‚ค์ง€ ๋ชฉ๋ก ํ™•์ธ
conda list

# ํ™˜๊ฒฝ ๋‚ด๋ณด๋‚ด๊ธฐ
conda env export > environment.yml

# ํ™˜๊ฒฝ ๊ฐ€์ ธ์˜ค๊ธฐ
conda env create -f environment.yml

# ํ™˜๊ฒฝ ๋ณต์ œ
conda create --name clone_env --clone myenv

# ํ™˜๊ฒฝ ์ œ๊ฑฐ
conda env remove --name myenv

# ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŒจํ‚ค์ง€ ์ •๋ฆฌ
conda clean --all

โœ… ํŠน์ง•:

  • ๊ณผํ•™ ๊ณ„์‚ฐ ๋ฐ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ตœ์ ํ™”
  • Python ์™ธ ๋‹ค๋ฅธ ์–ธ์–ด ํŒจํ‚ค์ง€ ํ†ตํ•ฉ ๊ด€๋ฆฌ
  • ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ์ž๋™ ํ•ด๊ฒฐ
  • ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ž๋™ ์ฒ˜๋ฆฌ
  • ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ™˜๊ฒฝ ์ผ๊ด€์„ฑ ๋ณด์žฅ
  • conda-forge ๋“ฑ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฑ„๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ๊ฐ€์ƒํ™˜๊ฒฝ์˜ ์™„์ „ํ•œ ๊ฒฉ๋ฆฌ๋กœ ์‹œ์Šคํ…œ ๋ณดํ˜ธ


6๏ธโƒฃ pyenv๋ฅผ ํ†ตํ•œ ๋‹ค์ค‘ ํŒŒ์ด์ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ

pyenv๋Š” ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ํŒŒ์ด์ฌ์„ ์‹œ์Šคํ…œ์— ์„ค์น˜ํ•˜๊ณ  ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๋‹ค๋ฅธ ํŒŒ์ด์ฌ ๋ฒ„์ „์ด ํ•„์š”ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

pyenv์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

  • ๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ ํŒŒ์ด์ฌ ์„ค์น˜ ๋ฐ ๊ด€๋ฆฌ
  • ์ „์—ญ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ณ„ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์ง€์ •
  • virtualenv์™€์˜ ํ†ตํ•ฉ
# pyenv ์„ค์น˜ (Linux/macOS)
# https://github.com/pyenv/pyenv#installation

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

# ํŠน์ • ๋ฒ„์ „ ์„ค์น˜
pyenv install 3.9.7

# ์„ค์น˜๋œ ๋ฒ„์ „ ๋ชฉ๋ก ํ™•์ธ
pyenv versions

# ์ „์—ญ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์„ค์ •
pyenv global 3.9.7

# ๋””๋ ‰ํ† ๋ฆฌ๋ณ„ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์„ค์ •
pyenv local 3.8.12

# ํ˜„์žฌ ์„ธ์…˜์˜ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์„ค์ •
pyenv shell 3.7.12

# pyenv-virtualenv ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•œ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
pyenv virtualenv 3.9.7 myproject

# ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
pyenv activate myproject

# ๊ฐ€์ƒํ™˜๊ฒฝ ๋น„ํ™œ์„ฑํ™”
pyenv deactivate

# ๊ฐ€์ƒํ™˜๊ฒฝ ์‚ญ์ œ
pyenv uninstall myproject

โœ… ํŠน์ง•:

  • ์—ฌ๋Ÿฌ ํŒŒ์ด์ฌ ๋ฒ„์ „์˜ ์‰ฌ์šด ์ „ํ™˜ ๋ฐ ๊ด€๋ฆฌ
  • ํ”„๋กœ์ ํŠธ๋ณ„ ํŒŒ์ด์ฌ ๋ฒ„์ „ ์ž๋™ ์ „ํ™˜ (.python-version ํŒŒ์ผ)
  • ์‹œ์Šคํ…œ ํŒŒ์ด์ฌ ๋ณ€๊ฒฝ ์—†์ด ๋‹ค์–‘ํ•œ ๋ฒ„์ „ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋นŒ๋“œ ์˜ต์…˜ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์ง€์›
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์„ ํ†ตํ•œ ๊ธฐ๋Šฅ ํ™•์žฅ
  • ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ ์ง€์›์„ ์œ„ํ•œ ์ด์ „ ๋ฒ„์ „ ํŒŒ์ด์ฌ ์œ ์ง€ ๊ฐ€๋Šฅ
  • ํŒŒ์ด์ฌ ๊ฐœ๋ฐœ ๋ฒ„์ „ ๋ฐ ํฌํฌ ๋ฒ„์ „ ์„ค์น˜ ์ง€์›


์ฃผ์š” ํŒ

โœ… ๋ชจ๋ฒ” ์‚ฌ๋ก€:

  1. ํ”„๋กœ์ ํŠธ๋ณ„ ๋…๋ฆฝ ํ™˜๊ฒฝ ๊ตฌ์„ฑ: ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ๋…๋ฆฝ๋œ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜์กด์„ฑ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜์ž.

  2. ์˜์กด์„ฑ ๋ฒ„์ „ ๋ช…์‹œ: ๋ชจ๋“  ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „์„ ๋ช…ํ™•ํžˆ ์ง€์ •ํ•˜์—ฌ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์ž.

  3. ๊ฐœ๋ฐœ/์šด์˜ ํ™˜๊ฒฝ ๋ถ„๋ฆฌ: ๊ฐœ๋ฐœ ๋„๊ตฌ๋Š” ๊ฐœ๋ฐœ ์˜์กด์„ฑ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋ถˆํ•„์š”ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š๋„๋ก ํ•˜์ž.

  4. ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” ๋„๊ตฌ ์„ ํƒ:

    • ๋‹จ์ˆœํ•œ ํ”„๋กœ์ ํŠธ: venv
    • ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ: virtualenvwrapper
    • ๊ณผํ•™/๋ฐ์ดํ„ฐ ํ”„๋กœ์ ํŠธ: conda
    • ํŒจํ‚ค์ง€ ๋ฐฐํฌ ํ•„์š”: poetry
    • ์˜์กด์„ฑ ๊ด€๋ฆฌ ์ค‘์‹ฌ: pipenv
  5. ๋ฒ„์ „ ์ปจํŠธ๋กค์— ํ™˜๊ฒฝ ์ •์˜ ํŒŒ์ผ ํฌํ•จ: requirements.txt, Pipfile, pyproject.toml, environment.yml ๋“ฑ์„ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ํฌํ•จํ•˜์ž.

  6. ๊ฐ€์ƒํ™˜๊ฒฝ ๋””๋ ‰ํ† ๋ฆฌ ์ œ์™ธ: ๊ฐ€์ƒํ™˜๊ฒฝ ์ž์ฒด๋Š” .gitignore์— ํฌํ•จ์‹œ์ผœ ๋ฒ„์ „ ๊ด€๋ฆฌ์—์„œ ์ œ์™ธํ•˜์ž.

  7. CI/CD ํŒŒ์ดํ”„๋ผ์ธ ํ™œ์šฉ: ๋ฐฐํฌ ์‹œ ๋™์ผํ•œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ช…๋ น์„ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ํ†ตํ•ฉํ•˜์ž.

  8. ์ฃผ๊ธฐ์ ์ธ ์˜์กด์„ฑ ๊ฒ€์‚ฌ: ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•˜์ž.

  9. ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ์— ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ• ํฌํ•จ: README ํŒŒ์ผ์— ํ™˜๊ฒฝ ์„ค์ • ๋‹จ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ๊ธฐ์ˆ ํ•˜์—ฌ ํ˜‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜์ž.

  10. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ถ„๋ฆฌ: ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” .env ํŒŒ์ผ์ด๋‚˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌ์—์„œ ์ œ์™ธํ•˜์ž.



โš ๏ธ **GitHub.com Fallback** โš ๏ธ