파이썬에서 가상환경을 사용하는 이유
파이썬 개발을 할 때, 프로젝트마다 필요한 패키지와 버전이 다르기 때문에 종종 패키지 관리에 어려움을 겪게 됩니다. 또한 여러 패키지를 설치하다 보면 충돌이 일어나거나 어디에서 문제가 발생했는지 파악하기 어렵습니다. 이런 문제를 해결하기 위해 파이썬은 가상 환경 도구를 제공합니다. 가상환경에서 패키지를 설치하면 패키지 관리도 쉬울뿐더러 다른 컴퓨터 환경에서도 가상환경에서 사용된 패키지 목록들만 requirements.txt 파일로 쉽게 설치할 수 있습니다. 이번 글에서는 파이썬에서 가상 환경을 사용하는 이유와 그 장점에 대해 알아보겠습니다.
파이썬 가상환경 라이브러리 종류
venv(표준 라이브러리)
파이썬 3.3 버전 이상에서는 별도의 설치 없이 바로 사용이 가능한 장점이 있습니다. 다만 파이썬 2.x 버전에서는 지원이 되지 않으며 venv는 시스템에 설치된 파이썬 버전을 사용하여 가상 환경을 생성합니다.
가상환경 생성 명령어
cd 가상환경을 설치할 폴더
터미널에서 가상환경이 설치될 폴더로 경로를 이동해줍니다.
python -m venv 가상환경이름
설정한 가상환경 이름으로 가상환경을 생성합니다.
가상환경 활성화
가상환경 활성화를 위한 명령어로 윈도우와 리눅스터미널 별로 명령어가 조금 다릅니다.
vscode 윈도우 터미널
./가상환경이름/Scripts/activate
생성한 가상환경의 Scripts/activate를 실행합니다.
리눅스 터미널
source 가상환경이름/bin/activate
생성한 가상환경에 /bin/activate를 실행합니다.
가상환경 종료
deactivate
OS 상관없이 가상환경을 종료하기 위해서 다음 명령을 입력합니다.
가상환경에 설치된 패키지 requirements.txt 파일 생성
설치된 패키지 리스트를 파일로 저장할 수 있습니다. 프로젝트 필요한 패키지들만 따로 저장하여 다른 환경의 pc에서 손쉽게 설치할 수 있습니다.
pip freeze > requirements.txt
requirements.txt 파일로 패키지 설치하기
pip install -r requirements.txt
다른 환경에서 패키지 설치가 필요할 경우에는 위의 명령으로 패키지 일괄설치가 가능합니다. 통상적으로 requirements.txt라는 이름을 사용하지만 다른 이름으로 저장하셔도 상관없습니다.
virtualenv(외부 라이브러리)
파이썬 2.7 이상에서 사용할 수 있으며 여러 파이썬 버전을 관리할 수 있는 장점이 있습니다. 또한 venv가 지원하지 않는 파이썬 2.x버전과 지원이 되는 장점이 있습니다. virutalenv에서 또 다른 장점으로는 특정 파이썬 버전을 선택하여 환경을 만들 수 있습니다. 다만 기본 내장 라이브러리가 아니기 때문에 virtualenv를 사용하려면 별도로 패키지 설치가 필요합니다.
vritualenv 라이브러리 설치
pip install virtualenv
패키지 사용을 위해 pip install 명령으로 virtualenv 패키지를 설치합니다.
가상환경 생성하기
virtualenv 가상환경이름
가상환경의 이름을 설정하여 virtualenv 명령을 실행하면 현재 시스템에 설정된 파이썬 버전으로 가상환경이 생성됩니다.
특정버전 가상환경 생성하기
virtualenv -p /usr/bin/python3.6 myenv #특정버전 파이썬경로 직접지정
virtualenv --python=python2.7 myenv #환경변수 등록필요
특정 버전의 파이썬으로 가상환경을 생성하기 위해서는 해당 버전이 시스템에 설치되어 있어야 하며 두 번째 명령어의 경우 경로를 생략하기 때문에 환경변수 PATH에 등록이 되어있어 합니다.
가상환경 활성화
vscode 윈도우 터미널
./가상환경이름/Scripts/activate
리눅스 터미널
source myenv/bin/activate
가상환경 종료
deactivate
OS 상관없이 가상환경을 종료하기 위해서 다음 명령을 입력합니다.
가상환경에 설치된 패키지 requirements.txt 파일 생성
설치된 패키지 리스트를 파일로 저장할 수 있습니다. 프로젝트 필요한 패키지들만 따로 저장하여 다른 환경의 pc에서 손쉽게 설치할 수 있습니다.
pip freeze > requirements.txt
requirements.txt 파일로 패키지 설치하기
pip install -r requirements.txt
다른 환경에서 패키지 설치가 필요할 경우에는 위의 명령으로 패키지 일괄설치가 가능합니다. 통상적으로 requirements.txt라는 이름을 사용하지만 다른 이름으로 저장하셔도 상관없습니다.
venv와 Virtualenv 중 어떤 걸 사용할까?
파이썬 3.3 이상 버전에서는 표준 라이브러리로 venv가 포함되어 있기 때문에 별도의 설치과정 없이 바로 사용할 수 있는 장점이 있습니다. 반면에 virtualenv는 별도로 설치가 필요한 외부 라이브러리입니다.
해당 영상에서 인터넷 속도의 환경영향을 끼치는 패키지 설치 부분을 제외한 가상환경 생성 속도측면에서 봐도 virtualenv가 조금 더 빠르다는 결과영상이 있습니다. virtualenv는 별도의 설치를 요구하는 외부라이브러리지만 확장성이 뛰어나고 가상환경 생성속도가 빠르기 때문에 venv보다 virtualenv를 더 선호합니다.