Programming Language/Python

파이썬 버전 관리: pyenv, virtualenv, autoenv

알파해커 테크노트 2020. 2. 27. 01:20
반응형

pyenv, virtualenv, autoenv 이게 다 뭔데?

  • 프로그래밍을 하다보면, 내가 사용해야하는 언어나 패키지의 여러 버전을 사용해야 될 때가 있다.
  • 예를 들어, 내가 두 개의 프로젝트에 참여하고 있는데, 하나의 프로젝트에서는 Python 2.7을 사용하고 있는데, 다른 프로젝트에서는 Python 3.8을 사용하고 있다면 어떻게 해야할까?
  • 프로그래밍을 할때마다 일일이 Python을 삭제 했다가 버전에 맞는 것을 새로 설치해야할까?
  • 생각만해도 끔찍하다.
  • 스위치를 딸깍 누르는 수준으로 쉽게, 원하는 버전의 언어나 패키지를 썼으면 좋겠다.
  • pyenv, virtualenv, autoenv는 다 그런 목적으로 태어났다.

그러면 세 개의 차이는 뭔데?

  • 위의 예시처럼 Python의 버전을 그때 그때 바꿔주고 싶다면 pyenv를 사용한다.
  • 만약 바꿔야 되는 패키지가 Python이 아니라, Django와 같은 언어 외의 프레임워크나 패키지라면 virtualenv를 사용한다.
  • pyenv, virtualenv는 명령어 한줄 정도로 버전을 바꿀 수 있게 쉽게 되어있지만, 어떤 개발자들에게는 그 명령어를 입력하는 것 조차 귀찮다. 그래서 서로 다른 프로젝트를 수행했다면/하고있다면, 각 프로젝트가 어차피 나누어져있을테니, 프로그래밍을 하기위해, 해당 프로젝트의 디렉토리 진입하는 것 만으로도 그 프로젝트 환경에 맞는 버전이 셋팅되도록 하는 것이 autoenv이다.

설치 및 설정 방법

  • pyenv
    • pyenv는 window를 지원하지 않는다. 해당 포스팅은 mac os를 기준으로 설명하겠다.
    • pyenv를 설치하기 위해서는 homebrew를 사용해야한다.
      • brew update
      • brew install pyenv
      • 쉘 설정
        • (zsh 쉘의 경우 ~/.zshenv 또는 ~/.zshrc로 경로 변경해야 함.)
        • $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
        • $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
        • $ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
    • 설치 가능한 python 목록 확인
      • pyenv install —list
    • 파이썬 설치
      • pyenv install [파이썬 버전]
    • 설치한 파이썬 목록
      • pyenv versions
    • 특정 버전 삭제
      • pyenv uninstall [파이썬 버전]
    • 지금 내가 로컬에서 사용할 버전 설정
      • pyenv global [파이썬 버전]
      • 글로벌이라고 표현하는 이유는, 나의 로컬 PC를 전체라고 했을때, 가상 환경과 그곳에 적용되는 버전은 그 전체의 부분들이다. 부분에 해당되는 것은 로컬이라는 전체에 적용한다는 의미로 global이라는 키워드를 사용한다.
  • pyenv-virtualenv
    • pyenv가 Python 버전만을 바꾸어주는 것이라면, pyenv-virtualenv는 패키지들의 버전도 바꿔주기 위해 사용하는 것이다.
    • pyenv의 목록에 virtualenv가 포함되기 때문에, pyenv를 먼저 설치한 후 virtualenv를 설치한다.
    • pyenv-virtualenv 설치
      • brew install pyenv-virtualenv
    • 가상 환경 생성
      • pyenv virtualenv [version] [가상환경 이름]
      • pyenv virtualenv [가상환경 이름]
    • 가상 환경 삭제
      • pyenv uninstall [가상환경 이름]
    • 가상 환경 실행 및 비활성화
      • source activate [가상환경 이름] // 가상환경 실행
      • deactivate [가상환경 이름] // 가상환경 비활성화
  • autoenv
    • virtualenv를 통해 격리시킨 프로젝트 최상위 위치에서, .env 파일 생성
      • 해당 프로젝트로 진입할 때, .env에 입력된 스크립트가 자동으로 실행되면서, 개발자가 따로 명령어를 칠 필요가 없게 되는 것이다.
    • echo “Python Pyenv > MyProject 진입”
    • pyenv shell [프로젝트 이름]
    • pyenv activate

References

반응형