기능
pyenv를 활용하면 지정한 디렉토리 따라 다른 버전의 파이썬으로 자동 버전 변경되도록 설정할 수 있다.
또한 virtualenv와 연계해서 가상환경을 사용하면 해당 폴더로 진입할 시 자동으로 가상환경을 activate해주는 편리함이 제공된다.
참고로 pyenv는 맥에서만 작동하지만 2022년 이후 window에서 사용 가능한 pyenv가 있다고 한다.
아래 예시는 맥 사용 예시를 들고있다.
설정
brew 설치가 되어있지 않다면 brew 설치를 선행한다.
brew 설치 후 아래 순서를 따라간다.
brew install pyenv
# 설치가 끝나면...
brew install pyenv-virtualenv
brew를 오랜만에 이용하면 brew update부터 진행하므로 시간이 꽤 걸릴 수 있으니 이상하게 여기지 말 것
터미널(iterm2)에서 아래 문구를 추가해야 한다.
- 아래 작업을 거치게되면 특정 경로에 들어설 경우 사전에 지정한 python 버전으로 변경되도록 설정이 가능해진다.
- vim 으로 #에 해당하는 파일에 접근해서 아래 내용을 추가한다. (ex. vi ~/.bashrc)
- 본인의 터미널이 bash 기반인지 zsh 기반인지 미리 알아야 한다.
pyenv 설정하기 for bash
# ~/.profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
if [ -n "$PS1" -a -n "$BASH_VERSION" ]; then source ~/.bashrc; fi
# ~/.bashrc
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pyenv 설정하기 for zsh
# ~/.zprofile (없으면 하나 만들자)
eval "$(pyenv init --path)"
# ~/.zshrc
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
설치 가능한 파이썬 버전을 확인해본다.
pyenv install --list
원하는 버전을 설치해 두자
- pyenv에 사전에 설치한 파이썬 버전들로만 전환이 가능하므로 원하는 버전의 사전 설치가 필요하다
pyenv install 3.7.13 # 원하는 버전으로 설치할 것
설치가 끝나면 어떤 버전이 설치되어 있는지 확인할 수 있다.
system은 os 자체에 사전에 설치된 파이썬을 뜻한다.
pyenv versions
>>
system
3.7.13
이제 global과 local 지정을 해준다.
- pyenv global 3.7.13을 설정하면 이제 글로벌 파이썬 버전은 3.7.13이 되고 어딜가나 더이상 system 버전을 따르지 않는다. pip도 동일하게 동기화된다.
- pyenv local 3.7.13을 설정하면 현재 위치한 디렉토리와 하위경로에서는 local 지정한 파이썬 버전으로 자동 변경된다. 해당 디렉토리를 벗어나면 다시 global 버전으로 돌아오게 된다.
- -> 작업환경이 다른경로(다른 파이썬 버전이 필요한 디렉토리) 에 가서 local 설정을 진행한다.
이제 local 설정한 디렉토리를 대상으로 가상환경을 추가로 설치해 준다. 이 가상환경은 /Users/사용자이름/.pyenv/version 아래에 설치되며 해당 경로에 대한 심볼링 링크가 현재 디렉토리에 설정된다.
pyenv virtualenv 3.7.13 test-venv
만일 가상환경을 삭제할 경우 pyenv uninstall 가상환경이름 명령을 실행하면 되지만 심볼릭 링크만 삭제되는 것 같다. 그래서 직접 원본 경로에 가서 rm -rf해줘야 완벽히 삭제가 된다. 이렇게 불편하게 만들었을 리가 없을 것 같은데 내 os환경에 문제가 있는 것 같다.
여기까지 완료한 뒤 pip install —upgrade pip까지 완료해주면 이제 local 영역에 들어가는 순간 파이썬 버전이 그에 맞게 자동변경되며 가상환경도 자동으로 activate되는 것을 확인할 수 있다.
'파이썬 코딩 한줄' 카테고리의 다른 글
함수에서 *args 와 **kwargs를 알아보자 (0) | 2022.11.03 |
---|---|
키워드를 활용한 간단한 제품 추천 컨텐츠 기반 필터링(CBF) (0) | 2022.10.18 |
[pandas apply] 텍스트를 일정 길이만큼 잘라서 분리하기 (0) | 2022.10.14 |
아직도 셀레니움(Selenium)에서 벗어나지 못했다면... (0) | 2022.10.10 |
파이썬 groupby로 요소 모아 보기 (단순 집계 이상으로 활용하기) (0) | 2022.09.21 |