파이썬
개발 환경 설정
Pyenv - 여러 버전 설치

Pyenv 사용법 | 여러 버전 파이썬 설치, 삭제, list, local, global

이전 포스트에 맥OS 그리고 윈도우에서 최신 버전의 파이썬을 설치하는 방법을 정리보았습니다. 그런데, 경우에 따라 한 컴퓨터에서 여러 버전 혹은 다양한 배포판의 파이썬을 사용해야 할 수도 있습니다.

예를 들어, 웹 API 개발을 위한 FastAPI 중심의 버전과 패키지, 데이터 사이언스를 위한 아나콘다 배포판과 패키지를 각각 관리하는 경우처럼요.

이러한 여러 버전의 파이썬을 직접 관리하려면 번거로운 작업들이 필요합니다. 디렉토리도 기억해야 하고, PATH 설정도 계속 변경해야 하죠. 이러한 일을 대신해주는 프로그램이 있다면 요긴하게 사용할 수 있을텐데요.

1. Pyenv 소개

Pyenv는 우리를 대신해 여러 버전의 파이썬을 관리해주는 프로그램입니다. 사용하고 싶은 버전의 파이썬을 손쉽게 선택하고, 프로젝트마다 서로 다른 버전의 파이썬을 지정해서 자동 실행할 수도 있습니다. 하나의 명령어를 여러 버전의 파이썬으로 테스트할 수도 있구요.

이제부터 맥과 윈도우에서 pyenv를 설치하는 방법과 pyenv를 이용해 여려 버전의 파이썬을 설치하는 방법을 살펴보겠습니다.

2. 맥에서 pyenv 설치

맥에서 pyenv를 설치하는 가장 쉬운 방법은 Homebrew를 이용하는 것입니다. 다음 명령어로 설치를 시작합니다.

brew install pyenv

pyenv는 autoconf, openssl, pkg-config, readline 등을 함께 설치하는데요. autoconf는 쉘 스크립트를 통한 자동화, openssl은 SSL/TLS 암호화, pkg-config는 컴파일러 정보 확인, readline은 커맨드라인 조작을 위해 사용합니다.

설치가 완료되면, 버전 확인 명령어로 확인해줍니다.

pyenv --version

실행 결과: pyenv 버전 확인

2.1. 쉘 추가 작업

pyenv는 쉘을 통해 동작하기 때문에, 각자 사용하고 있는 쉘에 등록을 해줘야 합니다. 각 쉘마다 아래 명령어들을 입력해주면 됩니다.

2.1.1. Bash

Bash shell을 사용한다면, 아래 명령어를 입력해서 ~/.bashtc 파일에 코드 3줄을 추가합니다.

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

~/.profile 파일에도 코드 3줄을 추가합니다.

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.profile

혹시 ~/.bash_profile 파일이 존재한다면, 이 곳에도 추가합니다. 그 후 터미널을 재실행합니다.

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

2.1.2. Zsh

Zsh shell을 사용한다면, 아래 명령어를 입력해서 ~/.zshrc 파일에 코드 3줄을 추가합니다.그 후 터미널을 재실행합니다.

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

2.1.3. Fish

Fish shell 3.2.0 이상을 사용한다면, 아래 명령어를 실행합니다.

set -Ux PYENV_ROOT $HOME/.pyenv
fish_add_path $PYENV_ROOT/bin

3.2.0 이전 버전을 사용하면, 아래 명령어를 실행합니다.

set -Ux PYENV_ROOT $HOME/.pyenv
set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths

마지막으로, 버전과 상관 없이 아래 명령어로 ~/.config/fish/config.fish 파일에 내용을 추가합니다.

echo 'pyenv init - | source' >> ~/.config/fish/config.fish

이제 터미널을 재실행합니다.

3. 윈도우에서 pyenv-win 설치

Pyenv는 Unix 운영체제 기반 쉘 스크립트를 통해 동작하는 프로그램이기 때문에, 윈도우에서는 사용할 수 없었습니다. 그러나, pyenv-win 이라는 이름으로 윈도우에서 동작하는 Pyenv가 개발된 것은 비교적 최신 일입니다. 덕분에 윈도우 이용자들도 Pyenv의 이점을 누릴 수 있게 되었습니다.

pyenv-win은 명령어 하나로 설치할 수 있습니다. 먼저, 윈도우에 기본으로 설치된 파워쉘(Windows PowerShell) 을 관리자 권한으로 열어주세요. 터미널 앱을 실행해도 좋습니다.

윈도우 파워쉘 실행

제목표시줄에 관리자 Windows PowerShell를 확인하고 아래 명령어를 차례차례 입력해주세요.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

첫번째 명령어를 입력하지 않으면, 다음과 같은 권한 에러가 납니다.

pyenv 설치 보안 에러

2가지 모두 입력했다면, 다음과 같이 정상적으로 설치가 완료됩니다.

pyenv 설치 완료

이제 터미널 프로그램을 닫고 다시 실행해주세요. 그 다음 pyenv 버전 확인 명령어를 입력해보겠습니다.

pyenv --version

실행 결과: 윈도우 pyenv 버전 확인

정상적으로 설치가 완료되었습니다.

다음은, Pyenv가 사용하는 경로들을 환경 변수에 등록해줍니다. 아래 4개의 명령어를 하나씩 입력해주세요.

[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

터미널을 재실행하면 설정이 적용됩니다.

4. 맥, 윈도우에서 Pyenv 사용하는 방법

pyenv 사용법은 운영체제에 상관없이 동일합니다. 맥에서 진행하며 설명을 하고, 윈도우에서 실행한 것은 스크린샷으로만 보여드릴게요. 맥에서는 fFsh shell로 진행했습니다.

Mac python 실행 에러

맥에서는 파이썬을 실행하는 기본 명령어가 'python3' 이기 때문에 현재 아무것도 실행되지 않습니다. 이제 pyenv로 새로운 버전의 파이썬을 설치해볼텐데요.

4.1. Pyenv로 파이썬 설치

우선, 다음 명령어를 입력해서, 설치할 수 있는 모든 버전을 확인해볼게요.

pyenv install -l

실행 결과: pyenv install -l 목록

Python2버전부터 Jython, Graal, Anaconda 등 수많은 배포판과 버전을 확인할 수 있습니다. 이중 하나를 설치하려면 해당 버전의 이름을 직접 입력해주어야 합니다.

pyenv install [버전_이름]

실행 결과: python install pypy3

설치가 완료되었다면, 다음 명령어로 내 컴퓨터에 Pyenv로 설치한 모든 파이썬 버전을 확인합니다.

pyenv versions

실행 결과:

pyenv versions 결과

위에서 새로 설치한 pypy3 버전을 목록에서 확인할 수 있습니다. 다음은 설치한 파이썬으로 설정하는 방법입니다.

4.2. Pyenv로 파이썬 버전 설정

새로 설치한 파이썬을 실행하기 위해 버전을 설정하겠습니다. 총 3가지 방법이 있습니다. 하나씩 살펴볼게요.

4.2.1. 현재 쉘에서만 설정

지금 열려 있는 쉘에서만 사용하도록 설정하고, 터미널을 닫으면 설정이 초기화되는 방법입니다. 다음 명령어를 실행합니다.

pyenv shell [버전_이름]

실행 결과: pyenv shell 결과 versions 결과

python 명령어로 해당 버전이 실행되었습니다. 터미널을 재실행해서 명령어를 입력하면 초기화됨을 확인할 수 있습니다.

python command not found

4.2.2. 현재 폴더에서만 설정

현재 폴더에 특정 버전의 파이썬을 설정해두면, 이 폴더에 들어올 때마다 자동으로 설정한 버전이 실행됩니다. 원하는 폴더에 들어가서 다음 명령어를 입력합니다.

pyenv local [버전_이름]

테스트를 위해 새로운 폴더를 만들고 버전 설정을 해보았습니다.

실행 결과: pyenv local

test 폴더에 방문하면 설정된 파이썬이 실행되고, 상위 폴더를 나오면 다시 설정이 해제되는 것을 확인할 수 있습니다.

4.2.3. 컴퓨터 전역에서 사용하도록 설정

마지막으로, 어떤 경로에서든지 특정 버전이 실행되도록 설청하는 방법입니다. 아래 명령어를 입력하여 설정합니다.

pyenv global [버전_이름]

실행 결과: pyenv global ㅕ결과

3.11.1을 global로 설정하니, 현재 폴더, 새로운 폴더에서 확인했을 때 모두 해당 버전의 파이썬이 실행되었습니다.

마지막으로 유의할 점은 각각 설정된 파이썬 버전의 우선순위입니다. 1번이 최우선이고 그 다음 2번 그리고 3번입니다. 다시 말해 현재 쉘에만 설정한 버전은 폴더, 전역을 무시하고, 폴더에 설정한 버전은 전역을 무시합니다.

4.3. 기타 유용한 명령어

Pyenv는 설치, 버전 설정 이외에도 삭제, 경로 확인 등 다양한 명령어를 제공합니다. pyenv 명령어를 입력하면 명령어와 설명을 볼 수 있으니 참고하여 익혀보시기 바랍니다.

실행 결과: pyenv commands

5. 윈도우 Pyenv 사용 스크린샷

섹션 4에서 설명과 함께 진행한 부분을 윈도우에서 동일하게 해보겠습니다. 스크린샷만 보여드리니 설명은 섹션 4를 참고해주세요.

windows pyenv install -l

windows pyenv install

pyenv install

pyenv shell and local

copyright for Python pyenv

© 2023 All rights reserved.