mac에 pyenv를 이용해 python 설치하기

2017-03-05
블로그 UI가 개편중입니다. 참고해주세요.

mac에 python을 설치해본다. python의 공식 홈페이지에서 패키지를 다운받아서 설치하는 방법이 있겠으나, 매우 비추천하는 방식이다. 특히나 python은 2.X 대와 3.X 대의 라이브러리나 문법이 서로 호환이 안되므로 python 버젼관리를 도와주는 pyenv를 설치하여 관리하도록 한다.

homebrew 설치

homebrow를 우선 설치해서 pyenv의 설치를 돕도록 한다.

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)

pyenv 설치

homebrow를 설치했다면 아래의 명령어로 pyenv를 설치한다.

brew install pyenv

python 설치

아래의 명령어를 입력하면 설치가 가능한 목록이 출력된다.

$ pyenv install -l
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5
  2.5.1
  2.5.2
  2.5.3
  ...
  3.6.0

원하는 버젼을 선택해서 설치한다.

pyenv install 2.7.12

pyenv global 셋팅

python 버젼을 전역(global)로 셋팅한다.

pyenv global 2.7.12

pyenv 적용

위의 셋팅을 하고나면 시스템에 적용을 해야하는데 이때는 아래와 같은 명령어를 이용한다.

eval "$(pyenv init -)"

해당 내용은 아래와 같은 sh을 실행시킨다.

export PATH="/Users/seotory/.pyenv/shims:${PATH}"
export PYENV_SHELL=bash
source '/usr/local/Cellar/pyenv/1.0.7/libexec/../completions/pyenv.bash'
command pyenv rehash 2>/dev/null
pyenv() {
  local command
  command="$1"
  if [ "$#" -gt 0 ]; then
    shift
  fi

  case "$command" in
  rehash|shell)
    eval "$(pyenv "sh-$command" "[email protected]")";;
  *)
    command pyenv "$command" "[email protected]";;
  esac
}

매번 위의 명령어를 적용시키고 싶지 않다면 아래와 같이 .bash_profile에 아예 등록을 시켜두도록 한다.

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

후에 .bash_profile을 실행시켜 시스템에 적용한다

. ~/.bash_profile

pyenv local 셋팅

pyenv를 이용하면 python의 전역 버젼 뿐만 아니라 특정 폴더에서 로컬 version을 가지고 실행이 가능하다. 테스트를 위해 3.6.0 버젼을 설치하여 아래와 같이 실행해본다.

$ mkdir python-test
$ cd python-test

$ pyenv install 3.6.0
$ pyenv versions
  system
* 2.7.12 (set by /Users/seotory/.pyenv/version)
  3.6.0

$ pyenv local 3.6.0
$ python -V
Python 3.6.0

$ cd ..
$ python -V
Python 2.7.12

python-test라는 폴더를 만들고 해당 폴더에는 3.6.0 버젼의 python을 사용하도록 했다. cd명령어를 사용해서 상위폴더와 비교해보니 python-test에서만 3.6.0 버젼이 사용됨을 확인되었다.

local 명령어를 사용할 경우 .python-version이라는 파일이 생기고 python이 실행될 때에 해당 파일의 내용을 확인하여 python의 실행 버젼이 변경된다.

pyenv 명령어 목록

pyenv에서는 아래와 같은 커맨드를 사용할 수 있다.

commands
completions
exec
global
help
hooks
init
install
local
prefix
rehash
root
shell
shims
uninstall
version
version-file
version-file-read
version-file-write
version-name
version-origin
versions
whence
which

Tags

python