개발 환경 설정 #9 : Ubuntu 22.04에서 pyenv로 Python 버전 관리하기

YOUNGWOONG HAN·2026년 2월 8일

개발 환경 설정

목록 보기
9/17
post-thumbnail

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

이 포스팅에서는 pyenv 설치부터 원하는 Python 버전 설정까지 전 과정을 다룹니다.

1. Github 페이지 방문

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

2. pyenv 설치 전 빌드 의존성 설정


아래의 명령어를 입력하여 빌드 의존성을 해결합니다.

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

3. pyenv 설치

해당 페이지의 README에 따라 진행해줍니다.

curl -fsSL https://pyenv.run | bash

4. 환경 변수 설정


환경 변수가 설정되지 않아 발생하는 경고 문구입니다. 현재 상황에 따라 수정 파일을 선택하고, 설치 마지막에 출력되는 경로 코드를 복사하여 파일 맨 아래에 추가합니다.

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 : 터미널을 열 때마다(인터랙티브) 실행되는 작업 환경의 설정 파일입니다.

1. 명령어로 파일의 존재 여부를 확인합니다.


~/.profile 파일은 존재하고 ~/.bash_profile 파일은 존재하지 않습니다.

로그인 셸에서 자동 로드하려면:
~/.bash_profile 파일이 존재하면 해당 파일에, 없으면~/.profile 파일에 경로를 추가해줍니다.

인터랙티브 셸(비 로그인 셸)에서 자동 로드하려면:
~/.bashrc에 경로를 추가해줍니다.

2-1. 인터랙티브 셸(비 로그인 셸)에서 자동 로드하기

# 파일 열기
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를 눌러 파일을 저장하고 종료합니다.

2-2. 로그인 셸에서 자동 로드하기

# 파일 열기
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를 눌러 파일을 저장하고 종료합니다.

3. 수정한 설정을 적용합니다.

# ~/.bashrc 파일을 수정했다면
source ~/.bashrc 

# ~/.bash_profile 파일을 수정했다면
source ~/.bash_profile

# ~/.profile 파일을 수정했다면
source ~/.profile

5. pyenv 설치 확인

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

pyenv --version

성공!

6. Python 설치

1. 설치 가능 Python 목록을 확인합니다.

pyenv install --list | grep " 3.1"

3.1.0부터 3.15t-dev까지 설치가 가능합니다.

2. Python 버전 선택

3.13.12 버전을 선택하였습니다.

이유는 다음과 같습니다:

안정성

  • 3.13.12는 이미 전 세계 엔지니어들이 검증을 끝낸 버전입니다.
  • 주요 라이브러리들과의 안정적인 호환성이 확보되어 있습니다.

최신 버전의 위험성

  • 3.14 혹은 3.15와 같은 최신 버전은 아직 충분한 실전 검증을 거치지 못했습니다.
  • NumPy, SciPy 같은 수치 연산 라이브러리와의 예기치 않은 호환성 문제가 발생할 수 있습니다.
  • 만약 미세한 부동소수점 연산 버그라도 있다면, '알고리즘 문제인지, 하드웨어 구현 문제인지, Python 환경 문제인지' 구분하기 어려운 디버깅 지옥에 빠질 수 있습니다.

3. Python 3.12.12 설치

# 3.13.12 버전 설치
pyenv install 3.13.12

# 전역 버전으로 변경
pyenv global 3.13.12

pyenv global 3.13.12 명령어는 시스템 Python을 직접 수정하지 않습니다.
대신 Shim(가로채기) 방식으로 동작합니다

  • 시스템 Python(3.12.3)은 절대 경로에 그대로 유지됩니다.
  • pyenv가 PATH 앞쪽에 위치하여 python 명령을 가로챕니다.
  • OS의 핵심 도구들은 절대 경로로 시스템 Python을 실행하므로 영향을 받지 않습니다.

이는 시스템 Python을 직접 업데이트하는 것보다 훨씬 안전한 방식입니다.

7. Python 설치 확인

python --version
which python

'3.13.12'와 '/home/young/.pyenv/shims/python' 출력을 통해 버전과 경로가 제대로 설정됐음을 확인할 수 있습니다.

마무리하며

pyenv를 통해 안정적인 Python 개발 환경 구축을 완료했습니다.
시스템 Python을 건드리지 않으면서도 원하는 버전을 자유롭게 관리할 수 있게 되었습니다.

다음 포스팅에서는 VSCode에서 C++ 개발 환경을 구축하는 방법을 다뤄보겠습니다. 컴파일러 설정부터 디버깅 환경까지, 효율적인 C++ 개발을 위한 설정을 다루겠습니다.

profile
electronic engineering student

0개의 댓글