๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ Python ์ค์น - Virtualenv, autoenv
์ด๋ฒ์ Python์ ๊ฐ์ ํ๊ฒฝ์์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ์๋ค.
์ Python์ ๊ฐ์ ํ๊ฒฝ์์ ์ค์นํด์ผ ํ ๊น์?
Python์ ๋ฒ์ ์ ํ์ฌ 2.7 ๋ฒ์ ๊ณผ 3.x ๋ฒ์ ์ด ์กด์ฌํฉ๋๋ค. ์๋ง ํ๋ก๊ทธ๋๋ฐ์ ์กฐ๊ธ ํด๋ณด์ ๋ถ๋ค ์ค์ Java ๋ผ๋ ์ธ์ด๋ก ํ๋ก๊ทธ๋๋ฐ์ ๋ง์ด ํด๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด, ์ด๋ฐ ๋ฒ์ ์ ์ฐจ์ด์ ๊ต์ฅํ ๋ฐ๊ฐ์ ํ๊ฑฐ๋ ๋ฏผ๊ฐํ๊ฒ ๋ฐ์ํ์ค ์ ์์ต๋๋ค.
๊ทธ๋ ์ต๋๋ค. ๊ทธ ์ด์ ์ค์ ํ๋๋ ๋ฐ๋ก ์ฌ๋ฌ๋ถ๋ค์ด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค ๋ฐ๋์ ์ฌ์ฉํ๊ฒ ๋๋ ๋ฐ๋ก "๋ผ์ด๋ธ๋ฌ๋ฆฌ"๋ผ๋ ๋ ์ ๋๋ฌธ์ด์ฃ . ๋ฌผ๋ก ๊ณต๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋๋ถ๋ถ ์ต์ ๋ฒ์ ์ ๋ง์ถฐ ์์ ์ด ๋๊ธด ํ์ง๋ง, ์์ ์ด ๊ฐ๋ฐํ๋ ํ๋ก์ ํธ ๋ด์ง ํ๋ก๊ทธ๋จ์ด ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์ฐ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ ๋ง์ถ๋ ค๋ฉด ์ฌ๋ฌ ๊ฐ์ง ๊ณ ๋ คํด์ผ๋ ์ฌํญ์ด ๋ง์์ง๋๋ค.
Java์ ๊ฒฝ์ฐ, Java 7 ๋ฒ์ ๊ณผ Java 8 ๋ฒ์ ์ ๋์์ ์ค์นํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๊น๋๋ค. ๋ฌผ๋ก ์ค์น์ ๋ํ ๋ฒ๊ฑฐ๋ก์์ด ๋์ด ์๋์ฃ . ์ฌ๊ธฐ์ ์์ ์ด ์ด๋ค ๋ฒ์ ์ Java๋ฅผ ์ธ ๊ฒ์ธ์ง ๋ฌผ์ด๋ณด์ง๋ ์๊ณ , ๊ทธ๋ฅ ๊ฐ๋ค๊ฐ ์ปดํ์ผ ํด๋ฒ๋ ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์ ๋ฒ์ ์ถฉ๋์ด ์ผ์ด๋๋ ์ผ์ด ์๊ธฐ๊ธฐ๋ ํฉ๋๋ค. ์ฌ๊ฐ ๋ถํธํ ๊ฒ์ด ์๋์ฃ ..
๊ทธ๋์ Python์๋ ์ด ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ถ๋ฆฌ์ํค๊ธฐ ์ํด ๊ฐ์ ํ๊ฒฝ์ด๋ผ๋ ๊ฒ์ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ฉด, ํ์ฌ ์ฌ๋ฌ๋ถ PC์ ํ์ฌ Python์ด ์ค์น๋์ด ์๊ณ , ํ์ฌ ์ค์น๋ Python์ ๋ ๊ณต๊ฐ์ผ๋ก ๋ถ๋ฆฌํด์ ์ ํ๋ก์ ํธ๋ 2.7๋ฒ์ , ์๋ ํ๋ก์ ํธ๋ 3.x ๋ฒ์ ์ผ๋ก ํ๊ฒฝ์ ๋๋๊ฒ ๋๋ฉด ๋ฒ์ ์ถฉ๋ ๋ฌธ์ ๊ฐ ํด์๋ฉ๋๋ค.
Python์ ๊ฐ์ ํ๊ฒฝ์ผ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง, ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ Virtualenv, Anaconda, Docker ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๊ทธ ์ค ๊ฐ์ฅ ์ฝ๊ณ ํธํ ๊ฒ์ด Virtualenv์ด๊ณ , Docker๋ ์ต๊ทผ์ ๋์จ ์ปจํ ์ด๋ ํํ์ ํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ Python์ ๊ฐ์ ํ๊ฒฝ ๋ฟ๋ง์ด ์๋๋ผ ์๋ฒ์ ๊ฐ์ ํ๊ฒฝ์ผ๋ก๋ ์ฌ์ฉํ์ค ์๋ ์๊ณ , ๋ง์ฝ ๊ฐ๋ฐํ๋ ํ๋ก์ ํธ๊ฐ ์น ์๋ฒ ๋ฑ์ ํ๋ก์ ํธ๋ผ๋ฉด, Virtualenv๋ณด๋ค๋ Docker๊ฐ ๋ ์ข์ ์ ์์ต๋๋ค.
์ด ํฌ์คํธ์์๋ ๊ฐ๋จํ Virtualenv๋ฅผ ์ฌ์ฉํด ๊ฐ์ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Virtualenv ์ค์น
Virtualenv์ ์ค์น๋ pip๋ก ๊ฐ๋จํ ์ค์นํ ์ ์์ต๋๋ค.
$ sudo pip install --upgrade virtualenv
Linux๋ OS X์ ๊ฒฝ์ฐ, sudo ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ virtualenv๋ฅผ ์ค์นํ์๋ฉด ๋ฉ๋๋ค.
ํน์ Ubuntu Repository์์๋ ๋ฐ์ผ์ค ์ ์์ต๋๋ค.
C:\> pip install --upgrade virtualenv
Windows๋ ๊ด๋ฆฌ์ ๋ช ๋ น์ผ๋ก ๋ช ๋ น ํ๋กฌํฌํธ๋ฅผ ์ด์ด์ฃผ์๊ณ , ์ ๋ช ๋ น์ด๋ฅผ ํ์ดํ ํ์๋ฉด ๋ฉ๋๋ค.
๊ฐ์ ํ๊ฒฝ ๊ตฌ์ถ
์ด์ Virtualenv๋ฅผ ์ค์นํ์ผ๋ ์ด๋ฅผ ์ด์ฉํด ๊ฐ์ ํ๊ฒฝ์ ์ง์ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋งค์ฐ ์ฌ์ฐ๋, ๊ทธ๋ฅ ๋ณด๊ณ ๋ฐ๋ผํ๊ธฐ๋ง ํ์๋ฉด ๋ฉ๋๋ค.
$ mkdir CVProject
์ฌ๋ฌ๋ถ๋ค์ด ์ํ์๋ ๊ฒฝ๋ก์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ค๋๋ค. Linux, OS X ์์๋ mkdir ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
C:\Users\K.I.D> md CVProject
Windows๋ md ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. (์ฌ์ค Windows์์ ๊ทธ๋ฅ ์ ํด๋ ํ๋ ๋ง๋ ๋ค๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค ^^;)
$ virtualenv -p ${PYTHON_VERSION} ${DIRECTORY}
virtualenv์ p ์ต์ ์ ์ด์ฉํด์ ์ํ์๋ Python ๋ฒ์ ์ ์ ๋ ฅํ์๊ณ , ์์์ ๋ง๋ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ์น๋ฉด, ํด๋น ๋๋ ํ ๋ฆฌ์ Python ๊ฐ์ ํ๊ฒฝ์ด ์์ฑ๋ฉ๋๋ค.
ex) Python 2.x ๋ฒ์ ์ ๊ทธ๋ฅ Python, Python 3.x ๋ฒ์ ์ Python3 ๋ผ๊ณ ์ ๋ ฅ.
๊ฐ์ ํ๊ฒฝ ์คํ
์ด์ ๊ตฌ์ถ์ ํด๋ดค์ผ๋ ๊ฐ์ ํ๊ฒฝ์ด ์ ๋๋ก ์คํ๋๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
$ source CVProject/bin/activate.sh
Linux, OS X๋ ์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ๊ฐ์ ํ๊ฒฝ์ ์คํํฉ๋๋ค.
C:\Users\K.I.D> CVProject\Scripts\activate
Windows๋ Scripts ํด๋์ ์คํ ํ์ผ์ด ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ ธ ์์ผ๋ฏ๋ก ์ด๋ฅผ ์คํํ๋ฉด ๋ฉ๋๋ค.
(CVProject) $ python --version
๊ทธ๋ผ ์ด์ ๋ ์ ์์ ์์ ์ ํ๋ก์ ํธ ํด๋๋ช ์ด ์์ ๋ณด์ผ ๊ฒ์ ๋๋ค.
CVProject) C:\Users\K.I.D> python --version
Windows๋ ์์ ๊ฐ์ด ๋ณด์ ๋๋ค.
python --version ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด, ์์ ์ด ์ํ๋ Python์ ๋ฒ์ ์ผ๋ก ๊ตฌ์ถ์ด ๋์๋์ง๋ฅผ ํ์ธํฉ๋๋ค.
$ whereis python
Linux์์ whereis ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด python์ PATH๋ฅผ ํ์ธํฉ๋๋ค. ๋ง์ง๋ง ๋ถ๋ถ์ ์์ ์ ๊ฐ์ ํ๊ฒฝ ๊ฒฝ๋ก๊ฐ ํ์๋จ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ฐ์ข ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ์ค์น๋ ๋ฐ๋์ (${๊ฐ์ํ๊ฒฝ ์ด๋ฆ})์ด ๋์จ ์ํ์์ ์งํํ์ ์ผ๋ง ๊ฐ์ ํ๊ฒฝ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ ์ํ์์๋ ์์คํ ์ ์ค์น๋๋ฏ๋ก ๋ฐ๋์ ํ์ธ๋ฐ๋๋๋ค.
autoenv ์ฌ์ฉ (Linux, OS X only)
virtualenv๋ฅผ ์ฌ์ฉํ๋ คํ๋ ์ผ์ผ์ด source ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋๊ฒ ๋งค์ฐ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค. ๊ทธ๋ ๋ค๊ณ ํฐ๋ฏธ๋์ด๋ ์์ ๋์ธ ๋๋ง๋ค ๊ฐ์ ํ๊ฒฝ์ ์คํํ์๋ ๊ทธ๊ฒ๋ ๋ฌธ์ ์ด์ง์?
๊ทธ๋์ autoenv๋ฅผ ์ฌ์ฉํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
$ sudo pip install --upgrade autoenv
autoenv๋ kennethreitz๋์ด ๊ฐ๋ฐํ์ ์ฝ๋๋ก virtualenv ๋๋ ํ ๋ฆฌ์ ์ ๊ทผํ๋ฉด ์๋์ผ๋ก ์ํ๋ ์ปค๋งจ๋๋ฅผ ์ ๋ ฅํ๊ฒ ํ๋ ์ฝ๋์ ๋๋ค.
์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ์ค ์ปค๋งจ๋ ์คํ์ด ๋ง๋ ํํ์ด๊ฒ ์ง๋ง, ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ Virtualenv ์คํ์ด ๋ชฉ์ ์ด๊ธฐ ๋๋ฌธ์, ๊ทธ๋ ๊ฒ ์ ์์ต๋๋ค ^^;
์ด์ ์คํ ๋ฐฉ์์ ์์์ผ๋ ์์ ์ virtualenv ๊ณต๊ฐ์ .env ํ์ผ์ ์์ฑํด๋ด ์๋ค.
$ vim .env
vim ํน์ nano, emacs ๊ฐ์ ์๋ํฐ๋ฅผ ์ด์ฉํด .env ํ์ผ์ ์์ฑํฉ๋๋ค.
source ~/CVProject/bin/activate
๊ฐ๋จํ๊ฒ virtualenv๋ง ์คํ์ํค๋ ์ปค๋งจ๋๋ฅผ ์ ์์ต๋๋ค.
source ~/CVProject/bin/activate
clear
echo ''
echo ' I'm CVProject'
echo ' enjoy Coding!'
echo ''
echo ' Created by. Neon K.I.D'
echo ''
๊ณ ๊ธ๋ ๋ฐฉ๋ฒ(?)์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ค ์๋ ์์ต๋๋ค.
๊ทธ๋ผ ์ด์ , ํฐ๋ฏธ๋๊ณผ ์์ ์๋ก ์คํ์์ผ, CVProject ํด๋์ ๋ค์ด๊ฐ๋ฉด..
$ cd CVProject
Virtualenv ํ๊ฒฝ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
"๊ทธ๋ฐ๋ฐ, ์ ๋๋ ์ด๊ฒ๋ ๋ถํธํด, ๊ฐ๋จํ ๋ช ๋ น์ด๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น?"
๊ทธ๋ฌ์๋ ๋ถ๋ค์, alias๋ฅผ ์ฌ์ฉํด๋ณด๋ ๋ฐฉ๋ฒ๋ ์์ผ๋, ํด๋น ๋ฐฉ๋ฒ์ ์จ๋ณด๋ ๊ฒ๋ ๋์์ง ์๊ฒ ์ต๋๋ค.
$ alias cv='cd CVProject'
์ ๋ ๊ฐ๋จํ ์๋ ๊ฒฝ๋ก๋ฅผ ๋ฃ์์ง๋ง ์๋ alias๋ฅผ ํ์ค ๋๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ํ์ ์ผ ๋ฉ๋๋ค ^^;
๋ช ๋ น์ด๊ฐ ์ ๋์ํ๋์ง ํ์ธํ์ผ๋ฉด, ์ด์ ํ๋กํ์ ๋ฃ์ด์ฃผ๋ฉด ๋๊ฒ ์ฃ ?
$ vim .bashrc
bashrc ํ์ผ์ ๋ก๋ํ๊ณ , alias ๋ถ๊ทผ์ด๋ ์๋ฌด ๊ตฐ๋ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํฉ๋๋ค.
alias cv='cd CVProject'
์ถ๊ฐํ๊ณ ์ ์ฅ ํ ๋ค, ์๋ก์ด ์์ด๋ ํฐ๋ฏธ๋์ ์คํํ๊ณ , cv ๋ช ๋ น์ด๋ง ์ ๋ ฅํ๋ฉด ์๋์ผ๋ก ๊ฐ์ ํ๊ฒฝ์ ๋ค์ด๊ฐ์ง๋๋ค.
๋ง์น๋ฉฐ...
์ฌ๋ฌ๊ฐ์ง ๋ด์ฉ์ด ์์ฌ์์ด ์ด๋ค ๋ง์ธ์ง ๋ชจ๋ฅด์๋ ๋ถ๋ค์ด ๋ง์ผ์ค ์๋ ์์ต๋๋ค. ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๋ฐ๋ ๋ง์น ์ฝ๋ฉ๊ณผ ๊ฐ์ ์ฌ๋ฌ๋ถ๋ค์ด ์ผ๋ง๋ ์ง ํ๋๋ง ํ๋ค๋ฉด ํธํ ๊ฐ๋ฐ ํ๊ฒฝ์ด ๋ ์๋ ์๊ณ , ๊ทธ๋ ์ง ์์ ์ ์์ต๋๋ค.
Python์ ๊ฐ์ ํ๊ฒฝ์ ๊ทธ๋งํผ์ ๋ฉ๋ฆฌํธ๊ฐ ์กด์ฌํฉ๋๋ค. (์ธ์ด์ ์ฌ์ฉ๋ ๊ทธ๋งํผ ๋ฉ๋ฆฌํธ๊ฐ ์์์ผ๋ฉด.... (?) ) Java์๋ ๊ฐ์ธ์ ์ผ๋ก ์ด๋ฐ ํ๊ฒฝ์ด ๋์ค๊ธฐ๋ฅผ ์ํ์ง๋ง, ๊ทธ ํ๊ฒฝ์ Docker๊ฐ ๊ทธ๋๋ง ๋ฉ๊ฟ์ฃผ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐธ Docker ์ ๋ง ์ข์ต๋๋ค ^^
์ฌ๊ธฐ๊น์ง Virtualenv๋ฅผ ์ด์ฉํ Python ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ด์์ต๋๋ค.
'Programming > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] PyCharm์์ Poetry๋ฅผ ์ด์ฉํ ๋ํ๋์ ๊ด๋ฆฌ (1) | 2020.12.20 |
---|---|
[Python] REST API ๊ฐ๋ฐ๋ก ์์๋ณด๋ WSGI, ASGI (9) | 2020.12.06 |
Python ๊ฐ๋ฐ ํ๊ฒฝ, ํ๋ก๊ทธ๋จ ์ค์น์ ๋น๊ต(3) - PyCharm (0) | 2016.10.15 |
Python ๊ฐ๋ฐ ํ๊ฒฝ, ํ๋ก๊ทธ๋จ ์ค์น์ ๋น๊ต(2) - Sublime Text 3 (0) | 2016.09.24 |
Python ๊ฐ๋ฐ ํ๊ฒฝ, ํ๋ก๊ทธ๋จ ์ค์น์ ๋น๊ต(1) - Jupyter (0) | 2016.09.06 |