Python 버전 관리하기 (pyenv & poetry)

dodo·2025년 2월 13일
0

1. 왜 Python 버전 관리를 해야 할까?

여러 명이 협업하는 프로젝트에서는 Python 버전이 다르면 실행 환경이 달라져 “코드는 같은데 실행이 안 되는” 문제가 발생할 수 있습니다.
이를 방지하려면 Python 버전을 프로젝트별로 통일하는 것이 중요합니다.

이를 해결하는 대표적인 방법이 바로 pyenv와 Poetry입니다.

2. pyenv 설치 및 사용법

Python의 버전을 개별적으로 관리하려면 pyenv를 사용하면 됩니다.
Mac에서는 brew를 이용하여 간단히 설치할 수 있습니다.

brew install pyenv

설치 후, 다음 명령어를 .zshrc 또는 .bashrc에 추가하여 pyenv를 사용하도록 설정합니다.

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

설치 확인은 다음 명령어로 합니다.
pyenv --version

3. pyenv 주요 명령어

pyenv install --list 설치 가능한 Python 버전 목록 확인
pyenv install 3.11.6 특정 Python 버전 설치
pyenv versions 설치된 Python 버전 목록 확인
pyenv global 3.11.6 시스템 전체 기본 Python 버전 설정
pyenv local 3.11.6 특정 프로젝트 디렉토리에서만 Python 버전 설정
pyenv shell 3.11.6 현재 터미널 세션에서만 Python 버전 변경
pyenv uninstall 3.10.4 특정 Python 버전 삭제

echo "3.11.6" > .python-version

이렇게 설정하면 해당 디렉토리에 들어올 때 자동으로 해당 Python 버전이 적용됩니다.

4. Poetry를 이용한 패키지 및 가상 환경 관리

Python에서는 NVM의 nvm use 같은 기능을 제공하는 도구로 Poetry를 사용할 수 있습니다.
Poetry는 의존성 관리, 가상 환경 자동 생성, 빌드 및 배포 지원을 제공하는 올인원 솔루션입니다.

curl -sSL https://install.python-poetry.org | python3 -

poetry --version

  1. Poetry 주요 명령어

poetry new my_project 새로운 프로젝트 생성
poetry init 기존 프로젝트에 Poetry 적용
poetry add requests 패키지 추가
poetry add pytest --group dev 개발용 패키지 추가
poetry install 의존성 설치 및 가상 환경 생성
poetry shell 가상 환경 활성화
poetry env info 현재 가상 환경 정보 확인
poetry env remove python 가상 환경 삭제
poetry build 패키지 빌드
poetry publish PyPI에 배포

6. pyenv + Poetry 함께 사용하기

기본적으로 Poetry는 시스템의 기본 Python을 사용합니다.
만약 pyenv를 사용하여 특정 Python 버전을 적용한 후, Poetry가 이를 사용하도록 설정할 수도 있습니다.

1) 특정 Python 버전 설치
pyenv install 3.11.6
pyenv local 3.11.6

2) 해당 Python을 Poetry에 적용
poetry env use $(pyenv which python)

3) 가상 환경 다시 설치
poetry install

이제 poetry env info를 실행하면 pyenv에서 설정한 Python 버전을 사용하는 것을 확인할 수 있습니다.

7. pyenv & Poetry의 원리

  • pyenv의 동작 방식
    pyenv는 Python 실행 경로를 변경하여 프로젝트별로 다른 버전을 사용할 수 있도록 합니다.

which python

  • Poetry 가상 환경 경로

Poetry는 .venv 폴더를 만들어 프로젝트별로 가상 환경을 자동으로 생성합니다.
poetry env info


로컬에서는 pyenv + Poetry 조합이 매우 강력하지만,
더 나아가면 Docker를 사용하여 Python 버전과 패키지를 완벽하게 격리할 수도 있습니다.

다음 포스팅에서는 Docker를 이용한 Python 환경 구축 방법을 다뤄보겠습니다.

profile
토스에서 iOS 개발자로 일하고 있습니다. 개발자로서 사용성이 좋은 앱을 만드는 것과, 개발자의 생산성을 올리는 방법에 관심이 많습니다.

0개의 댓글