virtualenv
는 디렉토리 단위로 가상의 Python 환경을 구성함에 있어 굉장히 강력합니다. 이 점에 대해선 반박할 여지가 없는데, 한 가지 단점이라면 가상 환경이 한 곳에서 관리되지 않아 기억하기 번거롭다는 것입니다. virtualenvwrapper
를 사용할 경우, 터미널이 현재 위치한 경로와 관계 없이 가상 환경을 활성화할 수 있다는 장점이 있습니다. 조금의 설정 과정을 거치고 나면, 더욱 더 편하게 virtual environment를 관리하고 사용할 수 있게 됩니다. virtualenvwrapper는 내부적으로 virtualenv를 의존합니다.
$ pip3 install virtualenvwrapper
가상 환경을 관리할 디렉토리 생성 & 환경 변수 설정
먼저 홈 디렉토리로 이동합시다.
$ cd ~
가상 환경이 들어갈 디렉토리를 생성합니다. .venvs
라는 이름을 사용하겠습니다.
$ mkdir .venvs
이제 홈 디렉토리의 .bashrc
나 .zshrc
, .profile
처럼 쉘의 환경 변수를 관리할 수 있는 곳에 WORKON_HOME
과 VIRTUALENVWRAPPER_PYTHON
환경 변수를 export하고, virtualenvwrapper.sh를 실행하도록 설정합니다.
export WORKON_HOME=~/.venvs
export VIRTUALENVWRAPPER_PYTHON="$(which python3)"
source /usr/local/bin/virtualenvwrapper.sh
virtualenvwrapper! 써보자!
mkvirtualenv [venv_name]
mkvirtualenv
는 venv_name을 이름으로 하는 가상 환경을 생성합니다.
$ mkvirtualenv test
Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/planb/.venvs/test/bin/python3.6
Also creating executable in /Users/planb/.venvs/test/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /Users/planb/.venvs/test/bin/predeactivate
(...)
virtualenvwrapper.user_scripts creating /Users/planb/.venvs/test/bin/get_env_details
(test) $
가상 환경이 생기고, 즉시 activate됩니다. virtualenvwrapper는 virtualenv를 의존하고 있기 때문에, 명령어도 꽤 유사합니다. 가상 환경에 다른 Python 버전을 사용하고자 하는 경우 virtualenv 때처럼 -p
나 --python
인자를 사용하면 됩니다.
$ mkvirtualenv -p python2 test_python2
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/planb/.venvs/test_python2/bin/python2.7
Also creating executable in /Users/planb/.venvs/test_python2/bin/python
Installing setuptools, pip, wheel...done.
(...)
virtualenvwrapper.user_scripts creating /Users/planb/.venvs/test_python2/bin/get_env_details
(test_python2) $
가상 환경을 빠져나오려면, virtualenv와 동일하게 deactivate
를 사용합니다.
(test_python2) $ deactivate
$
workon ([venv_name])
workon
명령은 venv_name에 해당하는 가상 환경에 진입하거나, venv_name이 전달되지 않는 경우엔 가상 환경의 목록을 불러옵니다.
(test_python2) $ workon
test
test_python2
(test_python2) $ workon test
(test) $
rmvirtualenv [venv_names ...]
rmvirtualenv
명령은 venv_names에 해당하는 가상 환경을 모두 제거합니다.
$ rmvirtualenv test test_python2
Removing test...
Removing test_python2...
제거하려는 가상 환경에 workon(activate)되어 있다면, 오류가 발생합니다.
(test) $ rmvirtualenv test
Removing test...
ERROR: You cannot remove the active environment ('test').
Either switch to another environment, or run 'deactivate'.
'Python 계열 > Python External Library' 카테고리의 다른 글
[Python External Library] 가상 환경 개념과 virtualenv (0) | 2018.09.07 |
---|