
Ubuntu 22.04.3 LTS를 설치하니 기본 시스템 Python 버전이 3.12.3이었습니다. 하지만 프로젝트에 필요한 버전이 따로 있었고, 향후 여러 Python 버전을 유연하게 관리할 필요가 있어 pyenv를 도입하기로 결정했습니다.
이 포스팅에서는 pyenv 설치부터 원하는 Python 버전 설정까지 전 과정을 다룹니다.

pyenv의 깃허브 페이지(https://github.com/pyenv/pyenv)로 이동하여 README를 살펴봅니다.


아래의 명령어를 입력하여 빌드 의존성을 해결합니다.
sudo apt update; sudo apt install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

약간의 수정 버전. wget와 llvm을 추가로 설치해 확장성을 높였습니다.
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
해당 페이지의 README에 따라 진행해줍니다.
curl -fsSL https://pyenv.run | bash


환경 변수가 설정되지 않아 발생하는 경고 문구입니다. 현재 상황에 따라 수정 파일을 선택하고, 설치 마지막에 출력되는 경로 코드를 복사하여 파일 맨 아래에 추가합니다.
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
# Restart your shell for the changes to take effect.
# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:
eval "$(pyenv virtualenv-init -)"
참고:
~/.bash_profile : 로그인 시 1회 실행되는 전역 환경 변수를 설정하는 파일입니다. 해당 파일이 존재하면 ~/.profile은 무시됩니다.
~/.profile : 로그인 시 1회 실행되는 Bash 전용 로그인 설정 파일입니다.
~/.bashrc : 터미널을 열 때마다(인터랙티브) 실행되는 작업 환경의 설정 파일입니다.

~/.profile 파일은 존재하고 ~/.bash_profile 파일은 존재하지 않습니다.
로그인 셸에서 자동 로드하려면:
~/.bash_profile 파일이 존재하면 해당 파일에, 없으면~/.profile 파일에 경로를 추가해줍니다.
인터랙티브 셸(비 로그인 셸)에서 자동 로드하려면:
~/.bashrc에 경로를 추가해줍니다.
# 파일 열기
nano ~/.bashrc
# 파일의 맨 아래에 코드 추가
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init -)"
저는 절대 경로를 사용하여 경로 지정하였습니다.

CTRL + O, ENTER 그리고 CTRL + X를 눌러 파일을 저장하고 종료합니다.
# 파일 열기
nano ~/.profile
# 파일의 맨 아래에 코드 추가
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
# 파일 열기
nano ~/.bashrc
# 파일의 맨 아래에 코드 추가
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init -)"
CTRL + O, ENTER 그리고 CTRL + X를 눌러 파일을 저장하고 종료합니다.
# ~/.bashrc 파일을 수정했다면
source ~/.bashrc
# ~/.bash_profile 파일을 수정했다면
source ~/.bash_profile
# ~/.profile 파일을 수정했다면
source ~/.profile

모든 터미널을 완전히 껐다 킨 뒤 다음 명령어를 입력하여 pyenv가 정상적으로 설치되었는지 확인합니다.
pyenv --version

성공!
pyenv install --list | grep " 3.1"

3.1.0부터 3.15t-dev까지 설치가 가능합니다.
3.13.12 버전을 선택하였습니다.
이유는 다음과 같습니다:
안정성
최신 버전의 위험성
# 3.13.12 버전 설치
pyenv install 3.13.12
# 전역 버전으로 변경
pyenv global 3.13.12
pyenv global 3.13.12 명령어는 시스템 Python을 직접 수정하지 않습니다.
대신 Shim(가로채기) 방식으로 동작합니다
이는 시스템 Python을 직접 업데이트하는 것보다 훨씬 안전한 방식입니다.
python --version
which python

'3.13.12'와 '/home/young/.pyenv/shims/python' 출력을 통해 버전과 경로가 제대로 설정됐음을 확인할 수 있습니다.
pyenv를 통해 안정적인 Python 개발 환경 구축을 완료했습니다.
시스템 Python을 건드리지 않으면서도 원하는 버전을 자유롭게 관리할 수 있게 되었습니다.
다음 포스팅에서는 VSCode에서 C++ 개발 환경을 구축하는 방법을 다뤄보겠습니다. 컴파일러 설정부터 디버깅 환경까지, 효율적인 C++ 개발을 위한 설정을 다루겠습니다.