Two Scoops of Django 라는 책을 읽다가 virtualenvwrapper 라는 가상환경 관리 도구를 알게 되었다.
가상환경을 한 곳에다 모아 놓고 관리할 수 있도록 지원해주기 때문에 프로젝트별로 가상환경 폴더를 따로 만들고 할 필요가 없다. 반년 정도 회사 컴퓨터에 설치해서 사용해봤는데 너무 편해서 집 컴퓨터에도 설치했다.
같은 맥OS라서 설치에 무리가 없을 것 같았는데 의외로 고생을 해서 다음에 컴퓨터 바꿀 경우를 대비해 설치 기록을 남겨두려고 한다.
우선, 일반적인 파이썬의 가상환경 관리 방식과 비교해서 어떤 부분이 편한지 적어본다.
일반적으로 파이썬 프로젝트의 가상환경을 구성하려면 다음과 같은 단계를 거치게 된다.
python3 -m venv ENV
.gitignore
에 포함시키기source ENV/bin/activate
반면, virtualenvwrapper는 다음과 같은 방식으로 가상환경을 관리하도록 해준다.
mkdir .virtualenvs
mkvirtualenv FOO
workon FOO
첫 번째 단계는 설치 시에만 해주면 되므로 프로젝트를 구성할 때는 아래의 두 단계만 수행하면 되고, 명령어도 훨씬 직관적이고 단순하다. 또한 가상환경 폴더는 .virtualenvs
라는 폴더에서 전부 관리되므로 프로젝트 안에 가상환경 폴더를 따로 만들고 할 수고가 없다.
공식 문서와 이 분의 글을 참고해서 설치했다.
pip3 install virtualenv virtualenvwrapper
가상환경 관리 폴더 설치
mkdir ~/.virtualenvs
shell startup file에 아래 내용 추가
export PATH=/usr/local/bin:$PATH
source /usr/local/bin/virtualenvwrapper.sh
변경 사항 반영을 위해 CLI 재시작
source ~/.zshrc
/usr/local/bin/ 경로에서 virtualenvwrapper.sh
파일을 못찾았다는 에러가 났다. 살펴보니 파일이 없었다. 어디 있는지 한참 찾다가 이 글에서 팁을 발견해서 따라해보았다. pip3 uninstall virtualenvwrapper
를 입력하면 첫 줄에 virtualenvwrapper.sh
파일의 경로가 나온다. 보통은 usr/local/bin/ 경로에 있는 것 같은데 내 경우에는 Library 폴더에 있었다. 파일의 경로를 알아냈으니 shell file을 수정해주었다.
export PATH=/usr/local/bin:$PATH
source ~/Library/foo/bar/virtualenvwrapper.sh
shell file을 리로딩했더니 에러가 안나서 가상환경을 하나 설치해보았다. 그런데 이번에는 virtualenvwrapper could not find virtualenv in your path
라는 에러가 났다. 뭐지 싶어서 공식 문서 부분을 보니 위에서 설정해준 $PATH 변수가 python과 virtualenv 패키지가 설치된 경로의 접근 경로인데, virtualenv 패키지가 /usr/local/bin/ 경로에 없어서 에러가 난 거였다. 그래서 각 변수의 경로를 따로 오버라이딩하기로 했다. 문서의 이 부분에 잘 나와있다.
export VIRTUALENVWRAPPER_PYTHON="$(which python3)"
export VIRTUALENVWRAPPER_VIRTUALENV=/Library/foo/bar/virtualenv
source ~/Library/foo/bar/virtualenvwrapper.sh
위 에러들을 해결하니 잘 동작하게 되었다.
mkvirtualenv <name>
workon <name>
deactivate
lsvirtualenv
리눅스 터미널 명령어와 비슷해서 사용하기 어렵지 않다.