# python2, python3 각각 설치하면 버전에 맞는 PYTHONPATH 를 설정해야 한다.
# pyenv python 버전별 설치 및 버전별 스위칭을 해준다.
# pyenv 를 이용해서 python2, python3 설치하면 PYTHONPATH 신경쓸필요 없이 각 버전에 맞는 환경이 설정되어 잘 실행된다.
brew install pyenv
# 쉘 설정 끝에 추가한다.
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
# 쉘을 다시 시작하면 다음과 같이 환경변수에 pyenv 가 가장 우선하게 된다.
echo $PATH
/Users/ysoftman/.pyenv/shims:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
# 파이썬 2.7.14 버전 설치
# -f, --force
pyenv install -f 2.7.14
# 파이썬 2.7.12 버전 삭제
pyenv uninstall -f 2.7.12
# 파이썬 3.6.4 버전 설치
pyenv install -f 3.6.4
# 참고로 mac 에서 pyenv install 3.6.4 설치시
# [Modules/posixmodule.o] Error 1 .. 등이 발생할 하면 xcode 를 업데이트해보자.
# 사용 가능한 파이썬 버전 확인, *현재 기본(전역) 설정된 값
pyenv versions
2.7.14
* 3.6.4 (set by /Users/ysoftman/.pyenv/version)
# 현재 전역으로 설정된 파이썬 버전 확인
pyenv global
# python3 을 전역으로 설정하는 경우
pyenv global 3.6.4
# 파이썬 3.6.4 을 사용하는 ysoftmanProejctA 이름의 가상환경 생성
# pyenv 로 3.6.4 가 설치되어 있어야 한다.
pyenv virtualenv 3.6.4 ysoftmanProejctA
# virtualenv 리스트
pyenv virtualenvs
# ysoftmanProjectA 가상환경 활성화(시작)
pyenv activate ysoftmanProjectA
# ysoftmanProjectA 가상환경 비활성화
pyenv deactivate ysoftmanProjectA
# virtualenv 삭제
pyenv uninstall ysoftmanProjectA
# 현재 작업중인 디렉토리에서는 python3 를 사용한다면 다음과 같이 실행
# .python-version 파일이 생성되며 내용은 3.6.4 로 명시된다.
pyenv shell 3.6.4
# 이제 같은 쉘 환경에서 python 또는 python3 를 실행이 가능하다.
# 참고로 패키지는 설치는 pip, pip3 그대로 사용하면 된다.
pip2 install numpy pillow matplotlib
pip3 install numpy pillow matplotlib
##########
# pyenv 파이썬 버전만 변경하기 때문에 프로젝트별 패키지를 구분해 관리하려면
brew install pyenv-virtualenv
# ~/.bashrc 에 다음을 추가해준다.(필요한 경우만)
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
export PYENV_VIRTUALENV_DISABLE_PROMPT=1
# 참고로 pyenv virtualenv-init - 명령을 실행하면
# precmd_function 에 _pyenv_virtualenv_hook() 를 추가 시키고
# 이 함수는 pyenv sh-activate 를 실행하는게 이게 느림(400ms 정도)
# prompt 속도가 느려지니 필요없으면 제외시키자.
# ysoftman1 디렉토리에 python3.6 가상환경 생성
virtualenv ysoftman1 --python=python3.6
# ysoftman1 가상환경 활성화
source ./ysoftman1/bin/activate
# ysoftman1 가상환경 비활성화(activate 스크립트에 deactivate()가 있음)
deactivate
# ysoftman1 가상환경 삭제
rm -rf ./ysoftman1
# 참고로 venv 는 virtualenv 의 경량버전으로 python3.3 부터 기본으로 포함되어 있다.
# 경량버전이라 기능이 적고 virtualenv 보다 속도가 느리다고 한다.
# 현재 디렉토리에 venv 가상환경 설정
# python3 -m venv .
##########
# pipenv 내부적으로 virtualenv 를 사용한다.
pip install pipenv
# 현재 경로의 프로젝트에 새로운 가상환경 생성
# (package.json 같은) Pipfile 패키지 파일을 생성한다.
pipenv
# 또는
pipenv --python 3.7
# 현재 프로젝트(가상환경) 홈 위치 확인
pipenv --where
# 현재 프로젝트의 실제 가상환경 위치 확인
# 이 위치로 패키지,파이썬 등이 설치된다.
# /Users/ysoftman/.local/share/virtualenvs/ysoftmant-test-1234 등의 위치가 된다.
pipenv --venv
# 현재 프로젝트(가상환경)에 패키지 설치(pip)
pipenv install package_name
# 현재 프로젝트(가상환경)에 패키지 삭제(pip)
pipenv uninstall package_name
# 현재 로컬(setup.py)을 현재 프로젝트(가상환경)에 설치
pipenv install -e .
# 현재 프로젝트(가상환경)을 가진 shell 실행
# 가상환경 설정을 반영(. ~/가상환경 설정 경로)한 쉘을 생성한다.
pipenv shell
# 현재 프로젝트(가상환경)에 설치된 패키지 정보 확인
pipenv graph
# 현재 프로젝트(가상환경)에서 실행하기
pipenv run aaa.py
# 현재 프로젝트(가상환경) 제거하기
pipenv --rm
# pipfile.lock 갱신하기
pipenv lock