가상환경은 독립적인 Python 실행 환경을 의미한다.
Python을 이용하는 경우,
2.- 버전을 사용할 수도 있고, 3.- 버전을 사용할 수도 있다.
각 프로젝트가 개별적으로 각자의 서버에서 서비스되고 있다면
설치된 Python 인터프리터 하나만 사용해도 되지만,
하나의 서버에서 여러 프로젝트가 서비스되고, 하나의 인터프리터만 사용된다면,
호환성 문제가 발생할 수 있다.
기존의 패키지를 다른 버전으로 업그레이드 하더라도 새로운 멤버로 인하여 정상작동하지 않을 수 있고, 요구하는 버전이 달라져 호환이 안 될 수도 있고, 오류가 발생했을때 문제점을 찾기 어렵다.
이런 문제를 해결하기 위해 프로젝트별로 사용하는 패키지와 인터프리터의 공간을 분리해주고,
각 프로젝트를 개별적으로 관리하여 패키지에 대한 호환성 문제를 해결하기 위해 사용한다.
Python에서 버전에 따른 제약을 피하기 위해서, 가상환경을 사용한다.
가상환경을 사용하면 각각의 프로젝트 별로 설치된 파이썬 패키지를 달리 가져갈 수 있으며, 환경의 개수에 제한이 없다.
venv (python 3.3 부터는 내장되어 있는 모듈)
virtualenv
conda