Pyenv 와 Virtualenv 를 이용한 Python 패키지 및 버전 의존성문제 해결

Posted by JudeLee on October 5, 2015

Pyenv 와 Virtualenv 를 이용한 Python 패키지 및 버전 의존성문제 해결

Introduction

파이썬 버전 3.1.4 와 여러 패키지(Django,redise 등) 를 이용한 A라는 오픈소스 프로젝트가 있다고 하자. 나는 A라는 프로젝트에 참여를 하려 하는데 내 로컬에 설치된 파이썬 버전은 2.7 이고 프로젝트에서 요구되는 패키지 또한 설치 되어있지 않다면 어떻게 해야할까? 내 로컬환경에서 3.1.4 버전의 파이썬을 설치한 뒤 사용하는 쉘 에서 Path 설정을 하여 버전설정까지 맞춘 후 해당 프로젝트에서 요구되는 패키지들을 일일히 설치해 주는 방법을 떠올릴 수 있다. 딱 보기에도 이런 작업은 너무 까다롭고 귀찮을 수 있고 또 매번 참여하는 프로젝트가 달라질 경우 해당하는 파이썬 버전이나 패키지들을 설치해주는것도 매우 번거로운 일이다. 하지만 Pyenv 와 Virtualenv 를 사용한다면 이렇게 Annoying 한 작업을 한큐에 해결할 수 있다.

Pyenv

Pyenv를 사용하면 파이썬 버전 의존성문제 해결할 수 있고 자세한 정보는 https://github.com/yyuu/pyenv 에서 확인할 수 있다.

Pyenv 의 설치는 아래와 같이 진행할 수 있다.

$brew install pyenv 

설치가 완료되었으면 다음과 같이 설치할 수 있는 버전의 목록을 확인한 후 설치를 진행한다. (여기서는 3.4.1 의 버전을 설치한다고 가정한다)

$pyenv install -list
$pyenv install 3.4.1

이후 설치한 가상 파이썬 버전의 사용은 다음과 같이 할 수 있다.

$pyenv shell 3.4.1

Virtualenv

Virtualenv 를 사용하면 독립된 파이썬 환경을 생성하므로서 이 문서의 도입부분에서 언급한 패키지 의존성 문제를 해결할 수 있다. 여기서는 Pyenv 와 Virtualenv 를 함께 사용하여 파이썬 버전과 패키지 의존성을 함께 해결할 수 있는 pyenv-virtualenv 를 사용할 것이다.

Virtualenv 의 설치는 아래와 같이 진행할 수 있다.

$brew install pyenv-virtualenv 

설치가 완료되었다면 , 쉘이 실행될때 마다 pyenv-virtualenv 를 자동으로 activate 할 수 있도록 하기 위하여 아래와 같이 진행한다.

$echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

이후 독립된 파이썬 환경을 생성하기 위해 다음과 같이 진행한다.

$pyenv virtualenv 3.4.1 chatting_3.4.1

새로운 파이썬 환경이 생성되었으면 이제 아래와 같은 명령어를 통해 실행할 수 있다.

$pyenv shell chatting_3.4.1
$pyenv activate

아래의 그림은 독립된 파이썬 환경을 실행시킨 결과이다.