Logo

여러 버전의 파이썬 관리하기 (pyenv)

2020년 파이썬 2 지원 종료

파이썬 2는 2020년 1월 1일부로 공식적으로 지원이 중료되었으며, 버전 2.7 이후로는 더 이상 업데이트가 되지 않습니다. (참고: https://pythonclock.org) 하지만 Mac의 경우, 아직도 파이썬 2가 기본 실행 환경(runtime/interpreter)로 사용되고 있어서, 파이썬 3를 사용하려면 추가 설치가 필요한 실정입니다.

macOS에 내장된 파이썬의 정확한 버전과 바이너리 파일의 위치는 다음과 같이 확인하실 수 있습니다.

$ python -V
Python 2.7.15
$ which python
/usr/bin/python

Mac에서 파이썬 3 설치

Mac의 패키지 매니저인 Homebrew를 이용하면 터미널에서 간편하게 파이썬 3를 설치할 수 있습니다.

$ brew install python

설치한 파이썬 3의 정확한 버전과 바이너리 파일의 위치는 다음과 같이 확인하실 수 있습니다.

$ python3 -V
Python 3.7.6
$ which python3
/usr/bin/python3

이제부터 Mac에 내장된 파이썬 2가 사용해야 할 때는 python, 직접 설치한 파이썬 3를 사용해야 할 때는 python3 커맨드를 사용하면 됩니다. 마찬가지 방식으로 파이썬 2 패키지를 설치할 때는 pip, 파이썬 3 패키지를 설치할 때는 pip3 커맨드를 사용합니다.

오직 파이썬 3만 쓰기

파이썬 2의 지원이 공식 중단 됨에 따라 앞으로 파이썬 2를 사용하는 프로젝트는 줄어들 것이고 그에 따라 점점 파이썬 2를 사용할 일이 적어질 것입니다. 저처럼 파이썬 2를 사용할 일이 거의 없는 분이라면, 위와 같이 굳이 2개의 커맨드를 사용할 이유가 없을 것입니다.

이럴 경우, 다음과 같이 pythonpip 커맨드가 파이썬 3 바이너리를 바라보도록 별칭(alias)를 설정해주면 됩니다.

$ echo "alias python=/usr/local/bin/python3" >> ~/.bash_profile
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.bash_profile

Zsh를 사용하시는 분들은 .bash_profile 파일 대신에 .zshrc를 사용하면 됩니다.

$ echo "alias python=/usr/local/bin/python3" >> ~/.zshrc
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc

.bash_profile(또는 .zshrc) 파일의 변경 사항을 적용하고 python 커맨드를 날리면 파이썬 3 런타임이 실행되는 것을 볼 수 있습니다.

$ exec "$SHELL"
$ python -V
Python 3.7.6
$ which python
pip: aliased to /usr/local/bin/python3

pyenv로 여러 파이썬 버전 변경하기

파이썬 3만을 쓰더라도, 하나의 Mac에서 3.5, 3.6, 3.7, 3.8 등 여러 마이너 버전의 파이썬을 사용하고 싶을 때가 있습니다. 이럴 경우, pyenv 패키지를 사용하면, 좀 더 쉽게 여러 버전의 파이썬을 설치하고 변경할 수 있습니다.

먼저 Homebrew를 이용해서 pyenv 패키지를 설치합니다.

$ brew install pyenv

그 다음, .bash_profile(또는 .zshrc) 파일에 pyenv가 활성화 되도록 관련 스크립트를 추가해줍니다.

$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

그리고 .bash_profile(또는 .zshrc) 파일의 변경 사항을 적용해줍니다.

$ exec "$SHELL"

자 이제, pyenv를 사용할 준비가 끝이 났습니다! 👍 pyenv install 커맨드로 여러 버전의 파이썬 3를 설치해봅니다.

$ pyenv install 3.7.6
$ pyenv install 3.8.1

드디어, pyenv global 커맨드를 이용해서 두 개 버전의 파이썬 사이를 자유롭게 넘나들 수 있게 되었습니다. 🎉

$ pyenv global 3.8.1
$ python -V
Python 3.8.1
➜  new-blog git:(new-contents) ✗ pyenv global 3.7.6
➜  new-blog git:(new-contents) ✗ python -V
Python 3.7.6

pyenv versions 커맨드를 통해서 Mac에 어떤 버전의 파이썬이 설치되어 있고, 이 중 현재 어떤 버전이 활성화되어 있는지 확인할 수 있습니다.

$ pyenv versions
  system
* 3.7.6 (set by /Users/dale/.pyenv/version)
  3.8.1

설치 가능한 모든 파이썬 보기

정확히 어떤 버전을 설치하시질 모르겠다면 pyenv install 커맨드를 -l 옵션을 붙여서 실행해보세요. 현재 설치가 가능한 모든 파이썬 버전이 출력되기 때문에 이 중에서 하나를 골라서 설치하실 수 있습니다.

$ pyenv install -l
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5.0
  2.5.1
  2.5.2
  2.5.3
  2.5.4
  2.5.5
  2.5.6
  2.6.0
  2.6.1
  2.6.2
  2.6.3
  2.6.4
  2.6.5
  2.6.6
  2.6.7
  2.6.8
  2.6.9
  2.7.0
  2.7-dev
  2.7.1
  2.7.2
  2.7.3
  2.7.4
  2.7.5
  2.7.6
  2.7.7
  2.7.8
  2.7.9
  2.7.10
  2.7.11
  2.7.12
  2.7.13
  2.7.14
  2.7.15
  2.7.16
  3.0.1
  3.1.0
  3.1.1
  3.1.2
  3.1.3
  3.1.4
  3.1.5
  3.2.0
  3.2.1
  3.2.2
  3.2.3
  3.2.4
  3.2.5
  3.2.6
  3.3.0
  3.3.1
  3.3.2
  3.3.3
  3.3.4
  3.3.5
  3.3.6
  3.3.7
  3.4.0
  3.4-dev
  3.4.1
  3.4.2
  3.4.3
  3.4.4
  3.4.5
  3.4.6
  3.4.7
  3.4.8
  3.4.9
  3.4.10
  3.5.0
  3.5-dev
  3.5.1
  3.5.2
  3.5.3
  3.5.4
  3.5.5
  3.5.6
  3.5.7
  3.5.8
  3.5.9
  3.5.10
  3.6.0
  3.6-dev
  3.6.1
  3.6.2
  3.6.3
  3.6.4
  3.6.5
  3.6.6
  3.6.7
  3.6.8
  3.6.9
  3.6.10
  3.6.11
  3.6.12
  3.6.13
  3.6.14
  3.6.15
  3.7.0
  3.7-dev
  3.7.1
  3.7.2
  3.7.3
  3.7.4
  3.7.5
  3.7.6
  3.7.7
  3.7.8
  3.7.9
  3.7.10
  3.7.11
  3.7.12
  3.7.13
  3.7.14
  3.8.0
  3.8-dev
  3.8.1
  3.8.2
(... 생략 ...)

마치면서

지금까지 하나의 Mac에서 여러 버전의 파이썬을 관리하는 몇 가지 방법에 대해서 살펴보았습니다. 개인적으로 pyenv를 사용한 이후로는 파이썬 개발을 할 때 버전 때문에 문제를 겪은 적은 없었던 것 같습니다.

여러 버전의 파이썬을 이렇게 운영 체제 레벨에서 관리하는 것도 방법이지만, 궁긍적으로 각 프로젝트 레벨에서 독립적으로 관리하는 것을 추천드리고 싶습니다. 프로젝트 레벨에서 파이썬 실행 환경을 제어하는 방법에 대해서는 추후 포스팅에서 다뤄보도록 하겠습니다.