Virtualenv란?

한 컴퓨터에서 여러 프로젝트를 관리하다보면 프로젝트마다 패키지를 따로 관리할 필요성을 느끼게 된다. 파이썬에서는 가상환경 기능을 통해서 프로젝트마다 따로 패키지를 관리할 수 있다. 파이썬에서 제공하고 있는 가상환경 관리 패키지가 바로 virtualenv이다.

Virtualenv 설치

virtualenv는 다음의 명령을 통해서 설치가 가능하다.

>>> pip install virtualenv

혹시 다음과 같은 에러가 난다면 아래처럼 명령을 조금 수정해주면 된다.

>>> pip install virtualenv
Collecting virtualenv
  Using cached https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c35d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl
Installing collected packages: virtualenv
Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/local/lib/python3.5/dist-packages/virtualenv.py'
Consider using the `--user` option or check the permissions.
>>> pip install --user virtualenv

Virtualenv를 이용하여 가상환경 만들기

파이썬2의 가상환경을 만드는 명령은 다음과 같다.

>>> virtualenv env_name

위의 명령을 통해서 env_name이라는 이름의 파이썬2 가상환경을 만들 수 있다.

파이썬3의 가상환경을 만드는 명령은 다음과 같다.

>>> virtualenv -p python3 env_name

문제는 이러한 방식으로 만들게 되면 이 가상환경들은 아무 패키지도 포함하지 않은 빈 가상환경이 된다. 아마 기본 파이썬에 설치되어있는 site-packages를 모두 가져오고 싶을 수 있다. 다음의 명령을 통해서 site-packages를 모두 포함한 파이썬3의 가상환경을 만들 수 있다. 다만 이 경우 pip install로 설치하는 모든 패키지들은 기본 파이썬에도 반영이 된다는 점을 주의하도록 하자.

>>> virtualenv --system-site-packages -p python3 env_name

또 한가지 주의할 점은 위의 명령들을 통해서 가상환경을 만들게 되면 가상환경을 담은 디렉토리가 현재 내가 터미널 상에서 위치하고 있는 디렉토리 내부에 만들어진다는 점이다. 즉, 현재 내가 /home/hyungcheol에 위치해 있었다면 가상환경이 담긴 디렉토리의 경로는 /home/hyungcheol/env_name이 될 것이다.

가상환경 실행/종료

어쨌든 내가 만든 가상환경이 담긴 디렉토리의 경로만 정확하게 알고 있다면 다음의 명령을 통해서 가상환경을 실행할 수 있다.

>>> source /home/hyungcheol/env_name/bin/activate

터미널 상에서 확인할 수 있듯이 가상환경 env_name이 제대로 실행되었다.

가상환경 종료는 간단하게 deactivate 명령을 통해서 수행할 수 있다.

>>> deactivate

종료가 된 것을 확인할 수 있다.

pip 패키지 관리

virtualenv를 통해서 현재 가상환경에 설치된 pip 패키지들을 따로 관리할 수 있다. 먼저 현재 가상환경에 설치된 pip 패키지들의 보기위해서는 현재 가상환경이 실행되고 있는 상태에서 다음의 명령을 수행하면 된다.

>>> pip freeze
apturl==0.5.2
beautifulsoup4==4.4.1
blinker==1.3
Brlapi==0.6.4
... (생략)

이 목록을 따로 뽑아내서 다른 가상환경으로 옮길수도 있다. 일단 목록을 뽑아내서 txt 파일로 저장하는 방법은 다음과 같다.

>>> pip freeze > requirements.txt

이렇게하면 현재 가상환경의 pip 패키지 목록이 requirements.txt로 저장이 된다.

또한 현재의 가상환경에 방금 뽑아낸 패키지 목록을 일괄적으로 설치하는 방법은 다음과 같다.

>>> pip install -r requirements.txt

이렇게 해주면 requirements.txt에 정리된 패키지 목록이 일괄적으로 현재의 가상환경에 설치가 된다. 이러한 방식을 통해서 가상환경의 pip 패키지들을 손쉽게 관리할 수 있다.


Go back to the List of Studies