[Python] virtualenv 가상환경 설정하기

Jaemun Jung
4 min readJan 21, 2021

--

Python의 virtualenv는 어플리케이션별로 독립된 가상 환경을 사용할 수 있게 해줍니다.

어플리케이션별로 독립된 가상 환경이 왜 필요할까?

예를 들어보겠습니다.

하나의 PC 혹은 서버 환경에서 어떤 어플리케이션은 버전 1의 라이브러리를 필요로 하고, 다른 어플리케이션은 버전 2의 라이브러리를 필요로 한다면, 어떻게 이 두 라이브러리를 관리할 수 있을까요? Host 파이썬에 각각 다른 두 패키지를 설치하려고 한다면 당연히 conflict가 발생할 것입니다.

혹은, 잘 작동하고 있는 특정 어플리케이션의 환경을 그대로 유지하고 싶은 경우를 생각해봅시다. 해당 프로그램에서 쓰고 있는 라이브러리의 버전의 변경이 Host 머신에서 일어난다면, 그동안 잘 돌던 프로그램에서 장애를 일으킬 수도 있습니다.

위와 같은 모든 케이스를 해결해주는 것이 virtualenv입니다.
하나의 PC 혹은 서버 안에서 virtualenv를 설정하고, 그 환경 안에서는 Host 환경과 별도로 각각 필요한 Python 버전을 관리하고, 필요한 특정 버전의 라이브러리를 관리할 수 있게 해줍니다.

한 서버 안에 여러 virtualenv 환경 설정을 통해 각각 독립된 버전 관리를 가능하게 해준다.

virtualenv 설정하기

  1. virtualenv 설치
    python3 -m pip install --user -U virtualenv
python3 -m pip install --user -U virtualenv

2. 독립된 파이썬 환경 만들기
환경을 만들고자 하는 경로로 이동하여 수행합니다.
cd [환경을 만들고자 하는 경로]
virtualenv env

virtualenv env

3. 가상 환경 활성화
가상환경을 활성화하고자 하는 경로 내에서 수행합니다.
cd [환경을 만들고자 하는 경로]
Linux/Mac OS :source env/bin/activate
Windows : .\my_env\Scripts\activate

가상 환경이 활성화 되면 위와 같이 명령창 앞에 (env) 가 뜹니다.

3. 가상 환경 내 패키지 설치
가상환경이 활성화 된 상태 -(env) 가 활성화된 상태에서 pip 명령을 통해 설치하면 가상환경 내에만 패키지가 설치됩니다.
- 예시 )pip3 install numpy pandas scipy scikit-learn

4. 가상 환경 비활성화
deactivate 명령을 통해 비활성화 할 수 있습니다.

virtualenv vs venv

virtualenv와 venv의 차이는 뭘까요?
기본적으로는 같은 기능을 합니다. 만약 쓰시던 것이 있다면 익숙한 것으로 쓰면 됩니다.

다만 작은 차이들은 있습니다.

  • 가장 큰 차이는 venv는 Python 3.3부터 venv module로 standard library로 포함되어 있어 별도의 설치 과정이 필요 없다는 점입니다.
    virtualenv는 위에서 진행한 것 처럼 별도의 설치 과정이 필요합니다.
  • venv 모듈은 virtualenv의 경량화된 모듈입니다. 그래서 virtualenv의 모든 기능을 제공하지는 않습니다.
    몇가지만 예를 들면 :
  • venv는 virtualenv보다 느립니다.(`app-data` seed method가 없기 때문에)
  • 확장성(extendable)이 virtualenv만큼은 아닙니다.
  • 가상환경을 파이썬 버전별로 임의로 만들 수 없습니다. (cannot create virtual environments for arbitrarily installed python versions)
  • pip를 통해서 업그레이드할 수 없습니다.

Refrences

https://virtualenv.pypa.io/en/latest/
https://docs.python.org/3/library/venv.html

--

--