๊ฐ์ํ๊ฒฝ(Virtual Environments)์ด ๋ญ์์โ
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ ํ๊ฒฝ์ด ์๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ "ํ๋ก์ ํธ๋ฅผ ์ํ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ง๋๋ ๊ฒ"์ ๋๋ค.
์ฝ๊ฒ ๋งํด์ ํ๋ก์ ํธ๋ง๋ค ํด๋น ํ๋ก์ ํธ์ ํ์ํ ๋ชจ๋๋ง ๋ด์์ ๋ง๋ ๋ฐ๊ตฌ๋๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค!๐งบ๐งบ๐งบ
์์ง๊น์ง๋ ์ดํด๊ฐ ์ ์๊ฐ์ค ์๋ ์์ต๋๋ค. ์๋์ ๊ฐ์ํ๊ฒฝ์ ํ์์ฑ์ ์ฝ์ด๋ด ์๋ค!
๊ฐ์ํ๊ฒฝ์ ํ์์ฑ
Python์ ํฌํจํ์ฌ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ ํจํค์ง(๋๋ ๋ชจ๋)์ ๋ฒ์ ์ ๊ณ์ํด์ ์ต์ ํํ๊ณ ์์ต๋๋ค. ๋ฒ์ ๋ง๋ค ์ผ๋ถ ๊ธฐ๋ฅ๋ค์ ์์ด์ง๊ฑฐ๋ ์๋ก ์๊น๋๋ค. ์ง๊ธ ์ ์๊ฒ ํ์ํ ํน์ ๊ธฐ๋ฅ์ด ์ต์ ๋ฒ์ ์๋ ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ต์ ๋ฒ์ ์ด ๋ฌด์กฐ๊ฑด ์ข์ ๊ฒ์ ์๋๊ฒ ์ฃ ? :) ํ์ง๋ง ํ๋์ ํ๊ฒฝ์๋ ํจํค์ง๋น ํ๋์ ๋ฒ์ ๋ง ์ค์นํ ์ ์์ต๋๋ค.
(์ฌ๋ฌ ๋ฒ์ ์ ์ค์นํ๋ ๊ฒ์ด ์์ ๋ถ๊ฐ๋ฅํ ๊ฒ์ ์๋์ง๋ง, ๊ตฌ์ถํ๊ธฐ๋ ์ด๋ ต๊ณ ์ฌ์ฉํ๊ธฐ๋ ์ด๋ ต๋ค๊ณ ํด์!)
์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ ํฌ๊ฐ ์งํํ๋ ํฐ ํ๋ก์ ํธ๋ ์๊ฒ ๋๋๋ฉด ํ๋ก์ ํธ A, B, C๋ก ๋๋์ด๋ณผ ์ ์๋ค๊ณ ํ ๊ฒ์.
ํ๋ก์ ํธ๋ง๋ค ํ์ํ ๊ธฐ๋ฅ์ด ๋ค๋ฅด๋ค๊ณ ํด๋ณผ๊ฒ์! ์ฌ๊ธฐ์๋ ํ์ํ ํ์ด์ฌ ๋ฒ์ ์ด ๋ค๋ฅด๋ค๊ณ ์๊ฐํด๋ด ์๋ค.
ํ๋์ ํ๊ฒฝ์ ์๋ก ๋ค๋ฅธ ํ์ด์ฌ์ ์ค์นํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ํ ๊ฒ์ด ๋ฐ๋ก ์ ๊ฐ์ํ๊ฒฝ์ ๋๋ค! ์๋ ์ฌ์ง์ฒ๋ผ A, B, C ํ๋ก์ ํธ์ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค์ด ๊ฐ๊ฐ ํ์ํ ํ์ด์ฌ ๋ฒ์ ์ ์ค์นํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐธ ํธํ์ฃ ์ ๋ ์?! :)
์ดํดํ๊ธฐ ์ฝ๊ฒ ํ์ด์ฌ์ผ๋ก๋ง ์ค๋ช ์ ๋๋ ธ๋๋ฐ, ๊ฐ์ํ๊ฒฝ๋ง๋ค ๋ค๋ฅธ ํจํค์ง๋ค๋ ๊ฐ์์ ๋ฒ์ ์ผ๋ก ์ค์นํ ์ ์์ผ๋ ์ ๋ง ํธํ์ฃ !
โก๏ธ ๊ฒฐ๋ก ์ ์ผ๋ก๋ ๊ฐ์ํ๊ฒฝ์ ์์ ์ ๋ฐ๊ฟ ๋๋ง๋ค ๋ค๋ฅธ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ๋ถํธํจ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒฉ๋ฆฌ๋ ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์ ๋ง๋ค์ด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค!
๊ฐ์ํ๊ฒฝ์ ์ข ๋ฅ
๊ฐ์ํ๊ฒฝ์ ์ข ๋ฅ๋ ๋งค์ฐ ๋ค์ํ๋ฐ, ์ค๋ ์ ๋ ์๋์ฝ๋ค๋ก ์ค์ต์ ํด๋ณด๊ฒ ์ต๋๋ค!
์๋์ ์์ ๋ง๊ณ ๋ ์ฅ๊ณ , ์ ๋ ๋์ ๋ฑ ๋ค์ํด์(์ผ๋ฅธ ๋ค๋ฅธ ํ๊ฒฝ๋ค๋ ์ฌ์ฉํด ๋ณด๊ณ ์ถ์ด์)
๋ค๋ฅธ ๋ ์๋ค๋ ๋ค์ ํฌ์คํ ์ ๊ฐ์ง๊ณ ์ฌ๊ป์! ๋ฐ๋ก ํ์ํ์ ๋ถ์ ํฌ์คํธ ๋ง์ง๋ง์ REFERENCE๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์ :)
- venv : Python 3.3 ๋ฒ์ ์ดํ๋ถํฐ ๊ธฐ๋ณธ ๋ชจ๋์ ํฌํจ๋จ
- virtualenv : Python 2 ๋ฒ์ ๋ถํฐ ์ฌ์ฉํด์ค๋ ๊ฐ์ํ๊ฒฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Python 3์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
- conda : Anaconda Python์ ์ค์นํ์ ์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋
- pyenv : pyenv์ ๊ฒฝ์ฐ Python Version Manger์๊ณผ ๋์์ ๊ฐ์ํ๊ฒฝ ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ ๊ณต
์๋์ฝ๋ค ๊ฐ์ํ๊ฒฝ ๊ตฌ์ถ ์ค์ต
1. ์๋์ฝ๋ค ์ค์น
https://www.anaconda.com/products/individual
2. ์๋์ฝ๋ค๊ฐ ์ ๋๋ก ์ค์น๋์ด ์๋์ง ํ์ธ
ํฐ๋ฏธ๋์ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์!
conda --version
3. ํ์ฌ ์ค์น๋์ด ์๋ ๊ฐ์ํ๊ฒฝ ํ์ธ
conda env list
์ฒ์ ์ค์น๋ฅผ ํ์๋ฉด ๊ธฐ๋ณธ ํ๊ฒฝ์ธ base ๋ฐ์ ์์ง๋ง, ์ ๋ ์ด๋ฏธ ์ค์น๋ฅผ ํ ์ํ์ฌ์ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ๊ฐ์ํ๊ฒฝ์ ์ด๋ฆ๊ณผ ์์น์ ๋ํ ๋ชฉ๋ก์ด ํ์ธ๋ฉ๋๋ค :)
4. ์๋ก์ด ๊ฐ์ํ๊ฒฝ ์์ฑ
conda create --name '{๊ฐ์ํ๊ฒฝ ์ด๋ฆ}' python={๋ฒ์ }
'test' ๋ถ๋ถ์ ์ํ๋ ๊ฐ์ํ๊ฒฝ์ ์ด๋ฆ์ ์ ๊ณ ์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์๋ฉด ์งํํ๊ฒ ๋๋ ๋ฌผ์๊ณผ ์ ๋ ฅ์ฐฝ์ด ๋น๋๋ค. ์ด๋ y(yes)๋ฅผ ์ ๋ ฅํด ์ฃผ์๋ฉด ์ ์์ ์ผ๋ก ์ค์น๊ฐ ๋ฉ๋๋ค! conda env list๋ก ๋ค์ ํ์ธ์ ํด๋ณด๋ฉด 'test'๋ผ๋ ๊ฐ์ํ๊ฒฝ์ด ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค!
5. ๊ฐ์ํ๊ฒฝ ์ฌ์ฉํด๋ณด๊ธฐ
conda activate {๊ฐ์ํ๊ฒฝ ์ด๋ฆ}
ํด๋น ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์๋ฉด ์ํ๋ ๊ฐ์ํ๊ฒฝ์ ์คํํ ์ ์์ต๋๋ค. ์ ๋ ํด๋น ๊ฐ์ํ๊ฒฝ์ '๋ค์ด๊ฐ๋ค'๋ผ๋ ๋๋์ผ๋ก ์ดํดํ๊ณ ์์ด์! ๊ทธ๋ฌ๋ฉด ์๋ ์ฌ์ง์ฒ๋ผ ํฐ๋ฏธ๋์ ํ์ฌ ๋ด๊ฐ ์ด๋ค ๊ฐ์ํ๊ฒฝ์ ๋ค์ด์์๋์ง (๊ดํธ)๋ก ๋ณด์ฌ์ค๋๋ค. ์ฐธ ํธํ์ฃ ?
6. ๊ฐ์ํ๊ฒฝ ์ข ๋ฃ
conda deactivate
7. ๊ฐ์ํ๊ฒฝ ์ ๊ฑฐ
conda env remove --name {๊ฐ์ํ๊ฒฝ ์ด๋ฆ}
์ ๊ฑฐ๋ ์์ฑ์ฒ๋ผ ์ง์ง ํ๊ฒ ๋๋ ๋ฌผ์๋ ์์ด ์ฝ๊ฒ ์ ๊ฑฐ๊ฐ ๋ฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก conda env list ๋ช ๋ น์ด๋ก ์ ๊ฑฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค!
conda remove -n {๊ฐ์ํ๊ฒฝ ์ด๋ฆ} --all
์ ๋ช ๋ น์ด์ฒ๋ผ --all ์ด๋ผ๋ ์ต์ ์ ์ถ๊ฐํด์ฃผ๋ฉด ํด๋๊น์ง ๋ค ์ญ์ ๋ฅผ ํด์ค๋๋ค!
GUI๋ก ํ์ธํด ๋ณด๋ฉด ์๋ ์ฌ์ง์ฒ๋ผ ๊ฐ์ํ๊ฒฝ ๋ฆฌ์คํธ๋ฅผ ๋๋ ํ ๋ฆฌ๋ก ํ์ธํ ์ ์์ต๋๋ค. test๋ผ๋ ํด๋๊ฐ ์ฌ๋ผ์ก์ฃ ?
๐ฏ์ฃผ์์ฌํญ ๋ฐ ๊ฟํ๐
conda์ ๊ฐ์ํ๊ฒฝ์ ์ค์ฒฉ๋ผ์ ์คํ๋ ์ ์์ต๋๋ค.
์ค์ฒฉ๋ผ์ ์คํ๋๋ ํ๊ฒฝ์ ์ฅ์ ๋ ์์ง๋ง, ์ง๊ธ์ ๋ฏธ์ฒ ์๊ฐ์ง๋ ๋ชปํ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํฌ ์ ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ํ๊ฒฝ์ ์คํํ ๋๋ base๋ฟ๋ง ์๋๋ผ ์ด๋ค ๊ฐ์ํ๊ฒฝ๋ ์คํ๋์ด ์์ง ์์ ๊นจ๋ํ ํ๊ฒฝ์์ ์์ํ ์ ์๋๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค!
๋ณดํต ํฐ๋ฏธ๋์ ๋ค์ ์ผค ๋๋ง๋ค base ๊ฐ์ ํ๊ฒฝ์ด ๋ํดํธ๋ก ์คํ์ด ๋์ด์๋๋ฐ, ๊นจ๋ํ ํ๊ฒฝ์ ์ํด์ ์ข
๋ฃ๋ฅผ ๋งค๋ฒ ํด์ฃผ์ด์ผ ํด์. 'conda deactivate'๋ก ์ข
๋ฃํ ์ ์์ง๋ง, ์์ํ ๋๋ง๋ค ๋งค๋ฒ ํ๋ฉด ๋๋ฌด ๊ท์ฐฎ๊ฒ ์ฃ ?
์๋ ๋ช
๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ์
๋ ฅํด๋๋ฉด ์์ผ๋ก base๊ฐ ์๋์ผ๋ก ์คํ๋์ง ์๊ฒ ์ธํ
ํด ์ค๋๋ค! ์ ๋ง ํธํด์๐
์ถ์ฒ๋๋ฆฝ๋๋ค!
conda config --set auto_activate_base false
์ถ๊ฐ๋ก conda๋ ๋งค์ฐ ์น์ ํด์! ์๋ ์ฒ๋ผ ์ ๊ฐ ์คํ๋ฅผ ๋ด๋ฉด "๋๊ฐ ์ํ๋๊ฒ ์ด๊ฒ ํน์ ์ด๊ฑฐ์ผ?" ๋ผ๊ณ ์๋ ค์ค๋๋ค.
์ค์ํ ์ฝ๋ค์จ,, ๐ณ
๐ ์ฝ๋ค ๋ช ๋ น์ด ๋ชจ์.zip
conda --version # ์๋์ฝ๋ค ๋ฒ์ ํ์ธ
conda create -n {ํ๊ฒฝ๋ช
} python={๋ฒ์ } # ๊ฐ์ํ๊ฒฝ ์์ฑ
conda env list # ๊ฐ์ํ๊ฒฝ ๋ฆฌ์คํธ ํ์ธ
conda remove -n {ํ๊ฒฝ๋ช
} --all # ๊ฐ์ํ๊ฒฝ ์ญ์
activate {ํ๊ฒฝ๋ช
} # ๊ฐ์ํ๊ฒฝ on
deactivate ๋๋ conda deactivate # ๊ฐ์ํ๊ฒฝ off
conda config --set auto_activate_base false # conda ์๋ํ์ฑํ off (์๋์ผ๋ก base ์คํx)
conda config --set auto_activate_base True # conda ์๋ํ์ฑํ on
conda env list > result.txt # ๊ฐ์ํ๊ฒฝ ๋ฆฌ์คํธ๋ฅผ result๋ผ๋ txtํ์ผ๋ก ์ ์ฅํ๊ธฐ
๐ REFERENCE
'๐ฉ๐ปโ๐ป Programming > programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[home brew&git] Mac M1pro home brew๐บ & git ์ค์นํ๊ธฐ (0) | 2021.12.18 |
---|---|
[HTTPS]๋์นญํค์ ๋น๋์นญํค & ๊ณต๊ฐํค ์ํธํ ๋ฐฉ์ (0) | 2021.11.30 |
[TIL] API, HTTP, REST๊ฐ๋ & python์ผ๋ก ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2021.11.30 |
[git] git๊ณผ github๋ & git ๋ช ๋ น์ด ๋ชจ์zip in CLI (2) | 2021.11.19 |
์ ๋์ค ์ปค๋งจ๋ ๋ผ์ธ ์์๋ณด๊ธฐ๐ (0) | 2021.11.16 |