본문 바로가기

IT

맥(macOS)에서의 파이썬(Python) 버전구분(관리 pyenv) 및 가상환경(venv)사용

사용할 일이 있어 맥(macOS)에 설치된 파이썬의 상태를 확인해봅니다.

$python -V
Python 2.7.16

파이썬(Python) 2는 2020년 1월 1일로 공식적으로 지원 종료되었네요.

Python 2.7 will retire in... 0Years 0Months 0Days 0Hours 0Minutes 0Seconds

https://pythonclock.org/

 

Python 2.7 Countdown

Python 2.7 will retire in 2020. Learn more and see the countdown here.

pythonclock.org

파이썬(Python) 3를 설치합니다.

$brew install python

 

파이썬(Python) 3의 버전을 확인합니다.

$python3 -V
Python 3.8.2

 

파이썬(Python)의 버전구분

  파이썬(Python) 2 파이썬(Python) 3
파이썬(Python) 커맨드 $python $python3
패키지설치 $pip $pip3

 

현재는 두개의 파이썬(Python) 버전 뿐인데 각 버전의 파이썬(Python)의 마이너 버전을 사용하고 싶을때 pyenv 패키지를 이용해서 관리가능하다고 합니다만 개인적으로는 가상환경이 좋아보입니다.

 

파이썬(Python)의 가상환경설정

파이썬(Python) 2 virtualenv 패키지를 설치해서 구성
파이썬(Python) 3 내장된 venv모듈을 사용해 구성

파이썬(Python) 3 로 설정해봅니다.

 

프로젝트의 디렉터리를 작성, 작성한 디렉터리로 이동합니다. (가상환경으로 묶일단위)

$mkdir myProject
$cd myProject

 

가상환경을 작성합니다.

$python3 -m venv .venv

.venv로 해주는 것이 관행이라고 합니다.

그런데 위의 명령을 실행 후에 확인해보면 아무것도 보이지 않습니다. 

한참을 잘못되었나 싶었는데 숨김 디렉터리로 작성이 되어 보이지 않았던 것이었습니다.

 

숨김 디렉터리, 파일 보기

Finder shift + command + . 
Terminal ls -a

 

가상환경을 활성화합니다.

$. .venv/bin/activate
(.venv)$

.커맨드대신 source를 사용해도 된다고 합니다.

which커맨드로 사용되고 있는 파이썬(Python) 인터프리터를 확인합니다.

(.venv)$which python
/----프로젝트 디렉터리 경로 ----/.venv/bin/python

가상환경내의 파이썬(Python) 이 사용되고 있습니다.

 

버전을 확인해봅니다.

(.venv)$python -V
Python 3.8.2

python으로 파이썬(Python) 3의 커맨드 사용이 가능합니다.

 

일단 가상환경을 비활성화합니다.

(.venv)$deactivate

 

문제가 발생합니다.

$python3 -m venv .venv 의 가상환경 작성 시 파이썬(Python)의 버전을 설정가능할 줄 알았는데 로컬 환경의 버전이 그대로 적용됩니다. 대안으로 가상환경 안에서 파이썬(Python)의 버전을 바꿔볼까했는데 이것도 간단하지 않습니다.

어쩔 수 없이 pyenv 패키지를 이용해야 할 것 같습니다.

 

파이썬(Python)의 버전관리

pyenv패키지를 설치합니다. Homebrew를 이용합니다.

$brew install pyenv

Homebrew의 업데이트가 필요할 수 있습니다. (필요한 경우 자동으로 업데이트됩니다만 엄청난 시간이 걸릴 수 있습니다. )

파이썬(Python) 3도 같이 업데이트 되었습니다.

$python -V
Python 3.8.6

 

.bash_profile에 pyenv활성화 스크립트를 추가하고 변경사항을 적용합니다.

(shell관련해서는 다시 연구를 해야겠습니다. 일단 설명대로 실행합니다.)

$echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$exec "$SHELL"

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

 

갑자기 국어공부

"대로" or "데로"

대로 -> 상태
데로 -> 장소

설명대로 (설명의 상태)
깊은데로 가지마 (깊은 장소)

 

pyenv versions커맨드로 설치되어있는 파이썬(Python)의 버전을 확인합니다.

$pyenv versions
* system (set by /Users/--유저명--/.pyenv/version)

파이썬(Python)이 pyenv아래에서 관리됩니다.

 

 

파이썬(Python) 3.7.6 버전을 설치하고 pyenv versions커맨드를 다시 실행해봅니다.

$pyenv install 3.7.6
$pyenv versions
* system (set by /Users/--유저명--/.pyenv/version)
  3.7.6

system(Python 3.8.6) 과 3.7.6 두개가 표시됩니다. 

 

3.7.6버전으로 바꿔봅니다.

$pyenv global 3.7.6
$pyenv versions
  system
* 3.7.6 (set by /Users/--유저명--/.pyenv/version)
$python3 -V
Python 3.7.6

제대로 변경되었습니다.

 

이제 venv로 Python 3.7.6의 버전으로 가상환경을 설정해봅니다.

$mkdir myProject3.7.6
$cd myProject3.7.6/
$python3 -m venv .venv
$ . .venv/bin/activate
(.venv)$ python -V
Python 3.7.6

성공했습니다.

 

요약하면 아래와 같습니다.

venv 프로젝트단위로 다른 패키지를 설치할때 사용하는 가상환경
pyenv 프로젝트단위로 다른 버전의 Python을 사용할때 사용하는 버전관리

 

오늘도 많은 것을 배웠습니다.

 

반응형