개요
예전과는 달리 이제는 프로젝트마다 독립된 환경을 구성하는 게 대세입니다.
이렇게 하면 라이브러리 의존성때문에 의존성 지옥(dependency hell) 에 빠질 일도 없고 python 버전을 업그레이드했다고 프로젝트가 안 돌아갈 일이 없기때문이죠.
더구나 이렇게 프로젝트별로 독립된 환경을 구성하면 docker 같은 container 환경이나 serverless 에도 쉽게 적응할 수 있는 장점이 있습니다.
물론 프로젝트마다 패키지를 설치하므로 디스크 용량이 늘어나는 문제는 있겠지만 디스크는 싸고 독립된 환경으로 인한 효용이 더 크기 때문에 별 단점이 되지 않습니다.
virtualenv 는 파이썬 프로젝트마다 쉽게 독립 환경을 구성할 수 있게 해주는 CLI 도구로 venv 와 동일한 역할을 수행합니다.
venv 와 차이점
동일하게 격리된 가상 환경을 만들어 주는 도구로 python 3.3 부터 기본 탑재되어 있습니다. python3 -m venv 명령으로 사용할 수 있지만 virtualenv 에 비해서 다음과 같은 여러 단점이 있으므로 virtualenv 사용을 권장합니다.
- virtualenv 에 비해서 느림
- 확장 가능하지 않음
- 서로 다른 python 을 사용하는 가상 환경 구성 불가
- pip/pipx 로 업그레이드 불가
설치
python 3.5 이상이라면 pipx 를 통해 설치하는 걸 권장합니다
$ pipx install virtualenv
BASH
또는 pip 를 통해서 할 수도 있습니다.
$ python -m pip install --user virtualenv
BASH
사용
생성
가상 환경을 만들려는 폴더에서 다음 명령을 실행해 주면 현재 python 을 검색하고 PATH/TO/ENV 폴더밑에 가상 환경에 복사해 줍니다.
virtualenv PATH/TO/ENV
BASH
예로 현재 폴더 밑에 venv 폴더를 만들고 여기에 가상 환경을 구성할 경우 다음 명령을 실행합니다.
활성화
가상 환경을 활성화해주어야 격리된 공간에 설치된 python 과 패키지들을 독립적으로 사용할 수 있습니다.
가상 환경을 활성화하려면 source 명령어로 가상 환경 폴더 밑에 bin/activate 를 읽어들이면 됩니다.
source venv/bin/activate
BASH
윈도우 사용자는 bin 대신 scripts 폴더에 있는 activate 를 실행하면 됩니다.
.\venv\Scripts\activate
BASH
activate 는 가상 환경에 설치한 python 과 library 를 시스템에 설치된 것보다 먼저 사용하도록 PATH 와 PYTHONHOME 환경 변수를 잡아주는 역할을 하므로 꼭 실행해야 합니다.
이제 명령어를 실행하면 prompt 가 위에서 생성한 가상 환경 명(즉 venv) 로 표시되는 것을 알수 있습니다.
이제 pip 는 가상 환경에 패키지를 설치하므로 --user 옵션을 주지 않아도 됩니다.
비활성화
가상 환경을 중지하려면 deactivate 명령을 실행하면 됩니다.
python 버전 지정
현재 프로젝트에 특정 파이썬 버전이 필요할 경우 -p 옵션을 사용하면 사용할 python 을 지정할 수 있습니다.
다음은 python 3.9 를 사용하는 venv 라는 가상 환경을 구성합니다.
virtualenv -p /usr/bin/python3.9 venv
BASH
같이 보기
Ref