본문 바로가기

개발/기타

Pyenv로 파이썬 버전 관리하기

Pyenv

어떤 언어든 그렇겠지만 사용하다 보면 여러 버전을 동시에 사용해야 할 때가 있습니다. 이직한 회사에서 파이썬을 사용하고 있는데요. 여기도 어떤 프로젝트는 3.6.4를 사용하고 있고, 또 어떤 프로젝트는 3.7.6을 사용하고 있더라고요. 그래서 여러 버전을 동시에 사용하고 싶어 졌습니다. 마침 회사에서 pyenv라는 걸 사용하고 있어서 저도 사용해봤습니다.

Pyenv는 무얼 할 수 있나요?

  • 사용자별로 글로벌 파이썬 버전을 설정할 수 있어요.
    (Let you change the global Python version on a per-user basis.)
  • 프로젝트별로 파이썬 버전을 설정할 수 있어요.
    (Provide support for per-project Python versions.)
  • 환경변수로 파이썬 버전을 대체할 수 있어요.
    (Allow you to override the Python version with an environment variable.)
  • 한 번에 여러 버전의 파이썬을 사용할 수 있어요.
    (Search commands from multiple versions of Python at a time.)

Pyenv 설치

사용하기에 앞서 Pyenv를 설치해보겠습니다.

macOS 환경에 설치

macOS의 경우 Homebrew 통해 설치합니다

$ brew update
$ brew install pyenv

Windows 환경에 설치

Windows의 경우 두 가지 방법이 있습니다. Windows Suysystem for Linus 환경에 설치하시거나, pyenv-win의 방법을 통해 설치하시면 되겠습니다.

Linux 환경에 설치

Windows Subsystem for Linux를 포함한 리눅스 계열은 아래 방법을 따라하시면 됩니다.

$ curl https://pyenv.run | bash
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
$ exec $SHELL

쉘 설정

이제 한 가지의 작업이 더 남아 있습니다. 쉘 설정인데요. 자주 사용하는 쉘의 설정 파일(.zshrc, .bash_profile, .fishrc 등)에 pyenv 설정을 집어넣어 주셔야 합니다.

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

다른 쉘을 사용할 경우엔 .bash_profile을 해당 쉘의 설정 파일로 바꿔주시면 됩니다.

이제 pyenv를 사용할 준비가 되었습니다.

pyenv 사용하기

여러 버전의 파이썬 설치하기

이제 여러 버전의 파이썬을 자유롭게 설치할 수 있습니다. 3.7.5 버전을 설치해볼까요?

$ pyenv install 3.7.5
$ pyenv versions
* system (set by /Users/flynn/.pyenv/version)
  3.7.5

pyenv versions 명령어를 통해 현재 설치된 파이썬 버전들을 확인할 수 있습니다.

파이썬 버전 스위칭하기

현재 사용하고 있는 파이썬 버전을 확인하고, 방금 설치한 3.7.5 버전으로 스위칭 해봅시다.

$ python --version
Python 3.6.9
$ pyenv global 3.7.5
$ python --version
Python 3.7.5

현재 사용하고 있는 파이썬 버전을 쉽게 바꿀 수 있습니다.

프로젝트마다 사용할 파이썬 버전 지정하기

여러 프로젝트를 진행하다 보면 각 프로젝트마다 다른 버전의 파이썬을 사용하게 될 수 있습니다. 하지만 프로젝트를 열 때마다 pyenv global 명령어를 실행하는 건 귀찮기도 하고 깜빡할 수도 있죠. pyenv를 사용하면 프로젝트마다 사용할 파이썬 버전을 지정할 수 있습니다.

프로젝트를 여신 이후에 해당 프로젝트에 맞는 파이썬 버전을 지정해보겠습니다. 저는 3.6.8버전으로 지정해보겠습니다.

$ pyenv local 3.6.8
pyenv: version `3.6.8' not installed

위 메세지는 pyenv에 3.6.8버전이 설치되어 있지 않아서 나타나는 메세지입니다. 위에서 나타난 대로 설치하고 진행하면 되겠죠? 저는 굳이 3.6.9버전이 필요한 건 아니니 3.7.5버전으로 다시 지정해보겠습니다.

$ pyenv local 3.7.5

위 명령어를 실행하면 프로젝트 루트 폴더에 .python-version 파일이 생기고, 내용에 파이썬 버전이 지정됩니다. 이제 해당 프로젝트를 열 때마다 자동으로 해당 프로젝트에서 사용할 파이썬 버전이 지정됩니다.

마치며

새 회사에서 파이썬을 주로 사용해서 파이썬엔 nvm 같은 버전 관리 도구가 없나 찾아봤는데 역시나 있어서 요즘 정말 잘 사용하고 있습니다. 사용하기도 편하고 설정만 해두면 프로젝트만 열어서 바로 작업하면 되니 정말 편하네요. 혹시 좀 더 편하고 신기한 사용 방법이 있다면 알려주세요. ㅎㅎ 오늘도 글 봐주셔서 감사합니다. 다음에는 더 좋은 글로 찾아올 수 있도록 하겠습니다. 감사합니다!