Profile picture

[Python] pyenv 설치하기

JaehyoJJAng2024년 02월 02일

▶︎ pyenv

  • 파이썬 버전 관리 도구
  • 다양한 버전의 파이썬을 지원하고, 새로운 버전에 대한 쉬운 테스트가 가능

‣ 타 버전 관리의 문제점

  • system python
    • pip install로 모든 사용자가 사용할 수 있는 패키지 설치.
      • 기존 서비스 또는 새로운 서비스에 다른 패키지 버전을 사용하고 싶은 경우 예상하지 못할 문제가 발생할 수 있음.
    • 설치할 수 있는 파이썬 버전 제어 불가능
  • package manager
    • 패키지를 시스템에 설치하는 방법
    • 패키지를 사용자 공간이 아닌 전역 시스템 공간에 설치함.
    • 설치할 수 있는 파이썬 버전 제어 불가능

이러한 문제점을 볼 때, 파이썬 버전을 유연하게 관리하는 기준은 아래와 같다.

  • 사용자 공간에 파이썬 설치
  • 다양한 파이썬 버전 운영
  • 사용자가 원하는 파이썬 버전 지정
  • 설치된 버전 간 호환성

pyenv 패키지를 사용하면 이러한 작업들을 수행할 수 있다.


▶︎ pyenv 설치


0. 필수 패키지 설치

sudo apt-get install -y make build-essential \
libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
libsqlite3-dev llvm libncursesw5-dev xz-utils tk-dev \
libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

1. pyenv 설치 스크립트 실행

curl https://pyenv.run | bash

2. 환경변수 셋업

# bash 쉘 환경인 경우
# ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# zsh 쉘 환경인 경우
# ~/.zshrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
exec "$SHELL"

▶︎ pyenv 명령어

설치할 수 있는 python 버전 목록 확인

pyenv install --list

특정 버전의 파이썬 설치

pyenv install 3.11.0

Downloading Python-3.11.6.tar.xz...
-> https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tar.xz
Installing Python-3.11.6...

설치 시 시간이 조금 걸린다.


설치한 파이썬 버전 확인

pyenv versions

* system (set by /home/master/.pyenv/version)
  3.11.0
  3.11.6

생성한 가상환경 목록 확인

pyenv virtualenvs

  3.11.6/envs/py3_11_6 (created from /home/master/.pyenv/versions/3.11.6)
  py3_11_6 (created from /home/master/.pyenv/versions/3.11.6)

▶︎ 개발 환경 설정

‣ global

pyenv로 설치한 파이썬을 기본(글로벌) 파이썬 버전으로 변경

pyenv global {version}

‣ local

디렉토리 별로 파이썬 버전 다르게 설정

pyenv local {version}

최상위 디렉토리인 pyenv-test 디렉토리에서는 3.11.6 버전의 파이썬을 사용하고,

하위 디렉토리인 version_split 디렉토리에서는 3.11.0 버전을 사용해 볼 것이다.


최상위 디렉토리에서 pyenv local 3.11.6 입력
image


하위 디렉토리에서 pyenv local 3.11.0 입력
image


pyenv local은 각 디렉토리마다 파이썬 버전이 적힌 .python-version 이라는 파일을 생성함

tree -a

.
├── .python-version
└── version_split
    └── .python-version

‣ virtualenv

  • 원하는 버전에 대한 가상환경 생성

py3_11_6 이라는 가상환경을 생성

pyenv virtualenv 3.11.6 py3_11_6

test 라는 폴더에 위에서 생성한 가상환경을 적용하고 싶은 경우

pyenv local py3_11_6

py3_11_6 가상환경으로 접속하려는 경우

pyenv activate py3_11_6

Loading script...