[Python] pyenv 란?

안녕하세요🐶

빈지식 채우기의 비니🙋🏻‍♂️ 입니다.

 

요즘 AI에 대해 공부를 하면서 Python 을 자주 사용하게 되었습니다.

프로젝트 마다 각기 다른 모듈 버전을 사용하고,

각기 다른 파이썬 버전을 사용하기 때문에 venv 를 통해 프로젝트 마다 버전 관리를 해왔습니다.

 

하지만..

이상하게 venv 쓰다보면 Python 과 pip 경로가 homebrew로 자꾸 잡히다보니 오류가 발생하여,

찾다보니 pyenv에 대해 알게되었고 이 부분에 있어서 정리를 하려고 합니다!


1. pyenv 란?

pyenv

상단 이미지처럼 pyenvGlobal Local Shell 각 위치에 Python 버전을 구분해서 사용 할 수 있다.

shell > local > global > system(Homebrew) 우선 순위로 적용된다.

예를 들어,

Global 로 3.10 버전의 파이썬을 사용하고 있고 특정 프로젝트에서 3.10 버전의 파이썬을 Local 로 설정할 경우,

해당 프로젝트는 3.10 버전의 파이썬을 우선 인식한다.

Global 보다 Local이 우선 적용되기 때문이다.

 

이런 기능이 가능하다면,

프로젝트 마다 다르게 Python Local 을 설정해서 프로젝트 마다 충돌이 되는 것을 방지할 수 있다.


2. 사용법

개념은 여기까지 하고 바로 사용법을 알아보도록 하자.

2-1. Homebrew 설치

# 터미널을 통해 Homebrew를 설치한다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 

설치 이후 환경변수 적용을 해야한다. 아래와 같은 명령어를 입력한다.

# 경로 스크립트 입력
eval "$(/opt/homebrew/bin/brew shellenv)"

 

명령어를 보면 shell 이라는 단어가 나오는데,

위에 이미지 계층을 통해 알 수 있듯이 shell 이 가장 상단에 위치하므로 반드시 우선적으로 적용된다.


2-2. pyenv, pyenv-virtualenv 설치

# pyenv pyenv-virtualenv 설치
brew install pyenv pyenv-virtualenv

2-3. zshrc 설정

# pyenv 경로를 PYENV_ROOT 로 정의한다.
echo 'export PYENV_ROOT="$HOME/.pyenv"

$ pyenv/bin을 PATH에 등록하여 어디에서도 사용가능하게 한다.
export PATH="$PYENV_ROOT/bin:$PATH"

# pyenv 를 정상적으로 사용할 수 있도록 zshrc 에 init 명령어를 추가한다.
eval "$(pyenv init -)"

# pyenv virtualenv 를 정상적으로 사용할 수 있도록 zshrc 에 init 명령어를 추가한다.
eval "$(pyenv virtualenv-init -)"' > ~/.zshrc

# 적용
source ~/.zshrc

2-4. pyenv 특정 버전 설치 및 확인

# 파이썬 3.9.17 설치
pyenv install -v 3.9.17

# 설치된 모든 파이썬 버전 확인
pyenv versions

 


2-5. 가상환경 만들기

# 가상환경 만들기 ( 파이썬 버전 3.9.17 )
pyenv virtualenv 3.9.17 [가상환경 이름]

2-6. 가상환경 생성 확인

# 설치된 가상환경 확인
pyenv versions


2-7. 가상환경 활성화

# 프로젝트 이동 후 해당 프로젝트 경로에 local 등록
pyenv local [가상환경 명]

 


2-8. 활성화 확인

# python 과 pip 경로 확인 ( 가상환경으로 나오면 활성화 성공! )
which pip
which python

 

또한 pip list를 통해서 서로 다른 프로젝트들이 다른 모듈을 다운로드 받았는지 확인할 수 있다.


감사합니다.


참고

반응형