[Mac] Mac에서 pyenv, virtualenv 그리고 autoenv 사용하기

업데이트(2021.10.11): pyenv 설정 관련 값 추가

python으로 개발을 할 때 가상환경을 설정하는 상황이 꽤나 많아서 직접 포스팅을 하기로 하였습니다.


배경

파이썬으로 개발 혹은 어떠한 소프트웨어를 실행 할 때, 파이썬으로 된 환경에서 실행을 하려면 파이썬버전부터 해서 pip모듈까지 환경에 따라 설정해야 할 부분이 많은데 pyenv, virtualenv 그리고 autoenv를 이용하면 개발 하거나 파이썬 환경 세팅을 더 편하게 할 수 있다.


우선 요약

  • pyenv: python의 가상환경을 설정 할 수 있도록 해주는 도구로 여러 버전의 파이썬을 사용 할 수 있다.

  • virtualenv: python의 가상환경으로 정해진 버전에서 pip모듈들을 각 가상환경에서 설치하고 실행 할 수 있도록 해준다.

  • autoenv: 특정 디렉토리에 들어갔을 때 virtualenv를 자동으로 실행시켜줍니다.


pyenv

pyenv란 python 버전에 따라서 가상환경 설정을 할 수 있도록 도와주는 도구입니다.

설치는 맥에서 아래와 같습니다.

$ brew install pyenv


그 다음 pyenv init~/.bash_profile에 추가합니다. bash_profile에 추가하는것은 현재 OS(Mac이나 Linux)에 환경변수를 설정하는 부분이며 아래와 같습니다.

$ echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile


다음 아래와 같은 명령어로 현재 pyenv에서 사용 가능한 파이썬 버전들을 볼 수 있습니다.

$ pyenv versions
* system (set by /Users/taewoo/.pyenv/version)
  3.5.2
  3.5.2/envs/LinkU
  3.5.2/envs/pytest_practice
  3.5.2/envs/tdd_book_practice
  3.6.0
  3.6.0/envs/FoodGroup
  3.6.0/envs/LinkU
  3.6.0/envs/djangogirls
  FoodGroup
  LinkU
  LinkU_deprecated
  djangogirls
  pytest_practice
  tdd_book_practice


다음 아래와 같이 pyenv install –list를 통해서 pyenv에 설치 할 수 있는 파이썬 버전들을 볼 수 있으며 해당 버전을 설치하면 됩니다.

$ pyenv install --list

...

$ pyenv install [version]

예시

$ pyenv install 3.5.2


최신 python 버전들을 사용하기 위해서는 pyenv를 git pull하거나 update를 해줘야하는데 update의 명령어가 더 편합니다.

$ pyenv update


virtualenv

virtualenv를 통해서 가상환견을 설정하고 그 가상환경 설정마다 pip 모듈을 설치해 현재 컴퓨터의 환경과 독립적으로 파이썬만의 환경을 설정 할 수 있습니다.

다음 아래처럼 설치를 해줍니다.

$ brew install pyenv-virtualenv


pyenv와 똑같이 아래처럼 ~/.bash_profile에 추가합니다.

$ 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
$ source ~/.bash_profile


이제 실제로 가상환경을 만들어 보겠습니다. 사용예제는 아래 형태와 같으며 실제 명령어는 그 아래와 같습니다.

$ pyenv virtualenv [python version] [virtualenv name]
$ pyenv virtualenv 3.5.2 virtualenv-test


실제로 가상환경이 만들어지면 아래와 같이 “pyenv activate [virtualenv name]”을 명시하시면 되며 나갈 때는 반대로 “pyenv deactivate”을 통해서 나갈 수 있습니다.

  • pyenv activate [virtualenv name]: [virtualenv name]라는 이름의 가상환경 실행(사전에 가상환경이 만들어져 있어야함)
  • pyenv deactivate: 현재 shell에서 실행된 가상환경을 종료

가상환경이 세팅되면 커맨드 라인 제일 앞줄에 (virtualenv name)와 같이 가상환경이 실행되어 있음을 자동으로 나타내줍니다.

$  pyenv activate virtualenv-test
$ (virtualenv-test)...
$ (virtualenv-test)...pyenv deactivate
//원상태로의 복귀


autoenv

autoenv는 특정 디렉토리에 들어갔을 때 virtualenv가 자동으로 실행 될 수 있도록 도와주는 도구입니다.

설치는 아래와 같습니다.

$ brew install autoenv


똑같이 이제 ~/.bash_profile에 추가를 합니다.

$ echo 'source /usr/local/opt/autoenv/activate.sh' >> ~/.bash_profile
$ source ~/.bash_profile


사용하는 방법은 가상환경을 실행하려는 디렉토리에서 다음과 같이 .env파일을 만들고 .env 파일 안에 아래 명령어처럼 원하는 가상환경을 입력해주시면 됩니다.

$ touch .env
$ echo "pyenv activate [virtualenv name]" > .env

예시는 아래와 같습니다.

$ touch .env
$ echo "pyenv activate virtualenv-test" > .env

이제 해당 디렉토리에 들어갈때마다 virtualenv가 실행이 됩니다.(해당 환경이 본 글과 같은 경우 virtualenv-test로 나옵니다.)

하지만 deactivate는 꼭 수동으로 해줘야합니다.


참고자료