venv(가상환경) 사용 이유

파이썬을 다루다보면 다양한 패키지들을 사용하게 된다.

그렇게, pip3 install {패키지명}을 무분별하게 사용하다보면 로컬에 있는 다른 프로젝트 간 패키지 버전 충돌 혹은 패키지(라이브러리)간 의존성 문제가 발생하기도 한다.

이를 해결하기 위해 ‘venv’라는 파이썬 모듈로 패키지 환경 분리가 가능하며, 작업환경이 바뀌더라도 필요한 패키지들을 동일한 버전으로 설치해 작업할 수도 있다.

현재 설치되어있는 파이썬 패키지 목록 확인

pip list

가상환경 생성

python -m venv myenv

venv 라는 모듈을 사용하겠다는 의미

myenv는 사용자 임의의 가상환경 별칭

가상환경 활성화

source myenv/bin/activate

이렇게 가상환경을 활성화한 후, 다시 패키지 목록을 확인(pip list)해보면 해당 환경에는 아무런 패키지가 없는 깨끗한 환경임을 확인할 수 있다.

VS Code에서 가상환경 사용하기

위의 명령으로인해 가상환경이 “활성화”되긴 했지만, 이것은 터미널에서만 준비가 된 상태. (VS Code 터미널 맨 앞에 가상환경 명이 표시되더라도 터미널 명령이 아닌 VS Code 자체의 인터프리터는 아직 가상환경의 파이썬버전 및 인터프리터가 동일하지 않은 상태)

즉, VS Code도 가상환경과 동일한 환경(버전 및 패키지)으로 설정 되어야한다.

방법

  1. VS Code 하단의 파이썬 버전정보 클릭 → 생성한 가상환경 이름 클릭

  2. 혹은 ctrl + shift + p(win) / cmd + shift + p(mac) 눌렀을때 표시되는 input box에서 “python select Interpreter” 라고 입력 후 위에서 생성한 가상환경이름이 포함된 인터프리터 선택

  3. VS Code 환경, 가상환경 동기화 완료

이것은 앞서 설명한 가상환경 활성화 작업과의 순서는 상관없지만 별개로 꼭 필요한 작업.

하단의 버전정보를 클릭하여 설정하는 방법과는 별개로 가상환경 생성 직후 뜨는 알림창을 통해 바로 가상환경과 동일하게 설정할 수 있다.

파이썬 패키지 설치

pip3 install {패키지명}

가상환경에서 설치된 패키지 목록 ‘백업’ 혹은 ‘다른 가상환경에서 재사용’ 방법

  1. pip3 freeze : 설치된 패키지 명과 버전정보가 아래와 같이 출력

  1. 위에서 출력된 결과를 파일에 담기 pip3 freeze > requirements.txt

  2. 이렇게 생성된 파일(requirements.txt)을 통해 다른 가상환경에서 동일한 패키지 목록 다운로드 pip3 install -r requirements.txt

가상환경 비활성화

deactivate

가상환경 삭제

생성된 가상환경 폴더(여기서는 myenv)를 지워주기만 하면 끝. 우클릭하여 delete 혹은 rm -rf myenv

처음에 가상환경을 설치할 때는 아무 패키지가 없는 ‘백지’와 같다. 가상환경을 생성할 때 로컬에 있는 패키지 정보를 그대로 가상환경까지 가져가고 싶을때의 방법은 다음과 같다

시스템 내 패키지 목록과 동일한 가상환경 생성

python3 -m venv myenv --system-site-packages

이후 pip3 list 를 하게되면 가상환경에 설치된 패키지 목록이 로컬시스템 패키지와 동일한 것을 확인할 수 있다.

가상환경에만 따로 설치되어있는 패키지목록을 확인하는 방법

pip3 list --local