https://blog.seotory.com/post/2017/03/install-python-in-mac-using-pyenv

문제

현재 Python2와 Python3가 존재하고, 수많은 패키지 또한 여러 버전을 가지고 있다. 만약 컴퓨터 한대로 여러 파이썬 프로그램을 돌릴 경우, 오직 글로벌하게 설치한 버전밖에 사용하지 못한다. 아니면 할때마다 삭제하고 재설치 하는 수밖에...

이런 비효율적인 상황을 해결하기 위해서 파이썬은 각 프로젝트마다 독립적인 환경을 적용하는 가상화 라는 방식을 사용한다

가상화 Tool

가상화를 위해서는 툴이 필요하다. 내가 아는 선에서는 두가지가 있는데

  • venv : 이건 파이썬 자체에서 제공하는 툴인데, 3.4 버전 이상부터 가지고 있어서 PASS ~~ (더 낮은 버전을 사용할 가능성이 있기 때문에)
  • pyenv & pyenv-virtualenv : 내가 사용할 툴은 이거다

pyenv

하나의 컴퓨터에 다양한 파이썬 버전을 설치하고 관리하는 툴이다

Document : https://github.com/pyenv/pyenv

MAC OS X 를 기본으로 설명한다

설치

Homebrew를 이용하여 pyenv를 다운받자

$ brew install pyenv

환경변수 설정

환경변수는 bash를 이용하여 설정한다

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

아직 bash에 대해 잘 모르니 따라적자... (시간날때 공부하자)

설치 확인

파이썬 버전 목록

$ pyenv install --list

Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1
  2.4.2
  ...

설치할 수 있느 파이썬 버전 목록이 나온다

pyenv 버전

$ pyenv --version

pyenv 1.2.13

pyenv 버전 확인

둘 중 하나가 나온다면 pyenv는 무사히 설치 된 것이다

사용법

pyenv의 명령어는 다음과 같다

pyenv {sub-command} [{parameters}....]

sub-command

  • local : 현재 디렉터리에 python 버전 확인 및 python 버전 지정
  • global : 전역 python 버전 지정
  • shell : shell에 파이썬 버전을 지정
  • install : 지정된 파이썬 버전을 설치
  • uninstall : 지정된 파이썬 버전 삭제
  • version : 현재 활성화 된 버전 출력
  • versions : 설치된 파이썬 버전들 출력
  • which : 활성화된 파이썬 명령의 위치 출력
  • whence : 지정한 명령을 포함하는 모든 파이썬 버전 출력

pyenv-virtualenv

pyenv의 확장 툴로,

pyenv 가 디렉토리별로 따로 파이썬 버전을 지정해주는 툴이라면
pyenv-virtualenv 는 가상환경을 만들어 그 가상환경만의 버전과 패키지를 생성, 관리해주는 툴이다

설치

설치는 pyenv와 같이 homebrew를 이용하자

$ brew install pyenv-virtualenv

사용법

가상환경 생성

$ pyenv virtualenv {version} {name}

virtualenv를 사용하면 버전을 지정할 수 있기 때문에, pyenv의 local 명령어를 사용할 필요는 없다

가상환경 활성화 & 비활성화

// 활성화
$ pyenv activate {name}
$ python --version  // 가상화한 버전 확인

// 비활성화
$ pyenv deactivate

활성화하면 아래처럼 가상화 name이 맨 왼쪽 편에 뜨게된다

(virtual_name) $ 

가상환경 제거

$ pyenv uninstall {name}
// 지울 꺼냐고 확인차 물어본다
$ y   // yes

autoenv

pyenvpyenv-virtualenv 덕분에 가상화를 시킬 수 있게 되었다! 😁
하지만 매번 활성화를 시켜줘야 하기 때문에.... 귀찮다.... (개발자 성향)

하지만!! 이것조차 자동화 시켜준 고마운 툴 autoenv 가 있다 😆

autoenv 란
디렉터리 진입시 .env 파일의 명령어들을 자동으로 실행시켜주는 툴이다
이것으로 자동으로 가상화를 활성화 시켜 줄 수 있다

Docuemnt : https://github.com/kennethreitz/autoenv

설치 및 환경설정

일관성 있게 Homebrew로 설치

$ brew install autoenv
$ echo "source $(brew --prefix autoenv)/activate.sh" >> ~/.bash_profile

사용법

프로젝트 디렉터리에 .env라는 파일을 만들고

Finder에서는 만들어지지 않고 터미널이나 vscode를 이용하자

.env 파일 안에 가상화 코드를 넣어준다

pyenv shell {name}
pyenv activate    

이러고 터미널로 진입하면 가상화가 활성화 될 것이다