[markdown]
virtualenv를 사용하는 법을 올렸었는데, pyenv라는 녀석을 추천해주셔서 실제로 설치해보고 경험해보려고 정리해보았다.
####아래의 링크들을 참고하여 작성했음을 밝혀드립니다.
[pyenv](https://github.com/yyuu/pyenv)
[pyenv-virtualenv](https://github.com/yyuu/pyenv-virtualenv)
[pyenv-installer](https://github.com/yyuu/pyenv-installer)
[pyenv + virtualenv + autoenv 를 통한 Python 개발 환경 구축하기](https://blog.ansuchan.com/how-to-set-python-dev-env/)
### pyenv 설치하기 ( mac OSX )
#### 의존성 패키지 설치
[일반적인 빌드 문제들](https://github.com/yyuu/pyenv/wiki/Common-build-problems)에 나와있는데, mac OSX에 미리 설치해야하는 의존성 패키지가 있으니 한번 확인해보도록 하자.
#### 설치 스크립트
“`python
brew update
brew install pyenv
“`
### pyenv 설치하기 ( ubuntu )
#### 의존성 패키지 설치
우분투에서 미리 설치해두어야하는 패키지들은 아래와 같다.
“`
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm
“`
#### 설치 하기 (pyenv installer로 설치함)
“`
sudo apt-get install git
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
“`
pyenv installer 라는 녀석으로 설치하는 게 위의 스크립트 인데, 아래의 플러그인들도 같이 설치된다.
pyenv-doctor, pyenv-pip-rehash, pyenv-update, pyenv-virtualenv, pyenv-which-ext
설치후에 아래의 스크립트를 .profile에 추가해서 pyenv를 패스에 추가해줘야한다.
“`
export PATH=”$HOME/.pyenv/bin:$PATH”
eval “$(pyenv init -)”
eval “$(pyenv virtualenv-init -)”
“`
### pyenv로 파이썬 설치하기
“`
pyenv install 2.7.8
pyenv install 3.4.3
“`
설치가 가능한 파이썬 바이너리는 아래의 커맨드로 확인가능하다
“`
pyenv install –list
“`
### pyenv로 virtualenv 관리하기
pyenv로 파이썬을 설치하면 `.pyenv/versions` 디렉토리 밑에 버젼별로 2.7.x, 3.4.x등의 디렉토리가 생긴다. 버전번호가 아니라 virtualenv 플러그인을 사용하면 버젼을 지정하고 거기에 이름을 넣어서 관리가 가능하다. pyenv installer로 설치를 하면 자동으로 pyenv-virtualenv 플러그인이 설치되므로 추가로 설치는 하지 않아도 된다.
솔직히 virtualenv 플러그인은 왜 필요한지 처음에는 의아했는데, 생각해보니 2가지 정도가 있었다.
1. 같은 파이썬 버젼이지만, 패키지를 다르게 설치하고 싶은경우.
2. virtualenv를 활성화하면 쉘의 앞머리에 가상환경 명이 나와서 편하니까
약간 귀찮다고 생각될 수도 있지만, pyenv installer로 설치하면 한방에 설치되니 최소한 설치는 매우 편하게 되어있다. pyenv의 서브명령어로 pyenv virtualenv 를 사용가능하게 한다는것 정도만 알면되니 사용하는게 이득으로 생각된다.
맥의 경우
“`
$ brew install pyenv-virtualenv
“`
로 따로 설치할 수 있다.
virtualenv플러그인이 있으면 아래의 커맨드가 실행이 가능하다.
“`
$ pyenv virtualenv
“`
버젼을 지정하지 않으면 현재 시스템의 버젼으로 가상환경이 설정된다.
“`
$ pyenv version #으로 현재 버젼의 확인이 가능하다
$ pyenv virtualenv py34
“`
버젼을 지정해서 가상환경의 설정이 가능하다. (설치하려는 해당 파이썬 버젼은 pyenv의 디폴트 디렉토리에 이미 설치가 된 상황이어야 한다.)
“`
$ pyenv install 2.7.3 # 설치 안한 경우만 실행
$ pyenv virtualenv 2.7.3 py27
“`
#### 가상 환경 활성화
`pyenv versions`를 했을때에 리스트에 나오는 가상환경들을 `pyenv shell`이라는 명령어로 활성화 시킬 수 있다.
“`
$ pyenv versions
위의 명령을 실행했을 때 결과가 아래와 같다면
* system (set by PYENV_VERSION environment variable)
2.7.3
2.7.8
3.4.3
py27
py34
versions
$ pyenv shell 2.7.3
$ pyenv shell py34
“`
등의 커맨드로 활성화 시킬 수 있다.
virtualenv플러그인으로 만든 가상환경인 경우 `activate`, `deactivate`로 활성화 비활성화 할 수 있다. 위의 리스트에서는 `py27`과 `py34`가 virtualenv 플러그인으로 만든 가상환경이다.
“`
$ pyenv activate py27
$ pyenv deactviate
$ pyenv activate py34
“`
이런식으로 가능하다.
`autoenv`라는 것을 사용하면 폴더별로 들어갈 때 가상환경을 지정할 수도 있다고 한다.
#### 느낀점
확실히 추천들을 하실만한 것 같다. rbenv, nvm, rvm등등을 경험해보았는데, 비슷한 느낌으로 pyenv를 사용할 수 있었다. virtualenv는 파이썬 버젼을 업데이트할 경우 pyenv보다는 조금 더 귀찮은 작업들이 있는데, pyenv에서는 그냥 install하고 기존의 패키지만 다시 설치하면 되니 확실히 간편하게 될 것 같다. 그리고 명령어 자체도 virtualenv나 virtualenvwrapper보다는 사용하기 편한 느낌이다. 일단 타이핑하는거 자체도 좀 짧기도 하고…^^;
[/markdown]