여러 버전의 파이썬 관리하기 (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개의 커맨드를 사용할 이유가 없을 것입니다.
이럴 경우, 다음과 같이 python
과 pip
커맨드가 파이썬 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
를 사용한 이후로는 파이썬 개발을 할 때 버전 때문에 문제를 겪은 적은 없었던 것 같습니다.
여러 버전의 파이썬을 이렇게 운영 체제 레벨에서 관리하는 것도 방법이지만, 궁긍적으로 각 프로젝트 레벨에서 독립적으로 관리하는 것을 추천드리고 싶습니다. 프로젝트 레벨에서 파이썬 실행 환경을 제어하는 방법에 대해서는 추후 포스팅에서 다뤄보도록 하겠습니다.