pyenv
Simple Python Version Management. 다양한 python version을 설치하고 쉽게 바꿔가면서 사용할 수 있도록 해준다.
설치하기
$ brew update
$ brew install pyenv
pyenv init을 ~/.bash_profile에 추가하기
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
pyenv 사용하기
$ pyenv version
system (set by /Users/jihun/.pyenv/version)
pyenv version
명령으로 현재 사용중인 python version을 확인 할 수 있다. 기본 설정은 system으로 시스템에 설치된 파이썬을 의미한다.
$ pyenv versions
* system (set by /Users/jihun/.pyenv/version)
3.5.2
pyenv versions
명령은 컴퓨터에 설치된 python version 리스트를 보여준다.
$ pyenv install --list
$ pyenv install 3.5.2
–list 옵션으로 설치할 수 있는 python리스트를 확인하고 원하는 version을 지정하여 설치한다.
$ pyenv shell 3.5.2
$ python -V
Python 3.5.2
pyenv shell
뒤에 사용하고 싶은 version을 입력하여 실행하면 해당 python version이 적용된다. python version 확인 명령(python -V)을 통해 제대로 적용 됐는지 확인한다.
virtualenv
Virtual Python Environment builder. 다양한 파이썬 환경을 구축하고 사용할 수 있도록 해준다. 프로젝트마다 독립된 개발환경을 제공하기 때문에 프로젝트들의 환경변수들이 꼬이는 일이 발생하지 않는다.
단독으로 virtualenv을 사용할 수도 있지만 여기서는 pyenv-virtualenv 를 사용하여 pyenv로 virtualenv까지 관리한다.
설치하기
$ brew install pyenv-virtualenv
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
사용하기
$ pyenv virtualenv 3.5.2 virtualenv-test-3.5.2
$ pyenv versions
* system (set by /Users/jihun/.pyenv/version)
3.5.2
3.5.2/envs/virtualenv-test-3.5.2
virtualenv-test-3.5.2
‘pyenv virtualenv PYTHON_VERSION NAME ‘명령으로 새로운 개발 환경을 만들고 생성된 것을 확인한다
$ pyenv activate virtualenv-test-3.5.2
(virtualenv-test-3.5.2) ... $ python -V
Python 3.5.2
(virtualenv-test-3.5.2) ... $ pip install django
(virtualenv-test-3.5.2) ... $ pip list > requirements.txt
(virtualenv-test-3.5.2) ... $ pyenv deactivate
activate를 통해 만들어진 가상환경을 실행시킨다. 필요한 패키지들을 설치하고 requirements.txt를 생성한다. 반대로 빠져나올 때는 deactivate명령을 사용한다.
$ pip install -r requirements.txt
설치 해놨던 동일한 패키지들을 다른 환경에서도 위의 명령으로 간편하게 사용할 수 있다.
autoenv
pyenv, virtualenv를 사용하다 보면 activate하는 것을 잊어버리는 경우가 빈번하고 매번 설정하는 것이 번거롭다. autoenv는 특정 프로젝트 폴더로 들어가면 자동으로 개발 환경을 설정해준다.
설치하기
$ brew install autoenv
$ echo 'source /usr/local/opt/autoenv/activate.sh' >> ~/.bash_profile
$ source ~/.bash_profile
사용하기
# 프로젝트 폴더 : env_test
$ cd env_test
$ touch .env
$ echo "pyenv activate virtualenv-test-3.5.2" > .env
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /Users/jihun/Development/env_test/.env:
autoenv:
autoenv: --- (begin contents) ---------------------------------------
autoenv: pyenv activate virtualenv-test-3.5.2
autoenv:
autoenv: --- (end contents) -----------------------------------------
autoenv:
autoenv: Are you sure you want to allow this? (y/N) y
.env파일의 내용은 해당 파일이 존재하는 폴더로 이동할 때마다 실행된다. 따라서 pyenv, virtualenv를 따로 설정해주지 않아도 프로젝트 폴더로 이동하면 자동으로 개발 환경이 설정된다.
(.env 파일은 .gitignore에 추가하면 좋을 것 같다)