[Python] 윈도우에서 pyenv 설치하기 (pyenv-win)

pikamon·2024년 6월 12일
0

Python

목록 보기
1/2

1. pyenv란?

pyenv란 여러 개의 Python 버전을 관리하고 각 Python 버전을 이용하여 가상 환경을 구축할 수 있도록 도와주는 도구이다.

파이썬 프로젝트마다 개발에 이용한 Python의 버전이 다를 수 있는데, pyenv를 이용하면 각 버전의 Python을 동적으로 가져와서 프로젝트 별로 다르게 적용할 수 있다. 이를 통해 사용자가 일일이 각각의 Python 버전을 PC에 수동으로 설치해야 하는 번거로움을 덜 수 있다.

2. pyenv-win 설치

Windows에서는 pyenv-win 이란 걸 이용하여 pyenv를 설치할 수 있다고 한다.

아래의 깃허브 공식 홈페이지에 들어간다.

https://github.com/pyenv-win/pyenv-win

스크롤을 내리다 보면 Installation 부분에 PowerShell을 이용하면 가장 쉽게 설치할 수 있다고 나와있다.

PowerShell을 클릭하면 PowerShell을 이용한 설치 방법을 확인할 수 있다.

PowerShell을 열고 아래 명령어를 입력한다.

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가 설치되는 것을 볼 수 있다.

만약 아래와 같이 이 시스템에서 스크립트를 실행할 수 없으므로 install-pyenv-win.ps1 파일을 로드할 수 없습니다. 라는 에러가 발생한다면,

cannot be loaded because running scripts is disabled on this system

PowerShell을 관리자 권한으로 연 다음 아래 명령어를 한 번 실행한 후 재시도한다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

그러면 아래와 같이 정상 설치되는 것을 볼 수 있다.

정상 설치되었다면 터미널을 종료한 후 새로 열어준다.

3. pyenv 실행 테스트

정상 설치되었는지 명령어를 입력하여 테스트해보자.

명령 프롬프트를 열어서 pyenv 라고 입력하였을 때,

pyenv

아래와 같이 사용할 수 있는 명령어 목록이 출력된다면 정상 설치된 것이다.

4. pyenv 간단 사용법

간단 사용을 위한 명령어는 아래와 같다.

  1. Python 버전 설치하기 / 삭제하기
    pyenv install
    pyenv uninstall
  2. PC에 설치된 Python 버전 조회하기
    pyenv versions
  3. 해당 Python 버전으로 설정하기
    pyenv global
    pyenv local
    pyenv shell
  4. 현재 적용된 Python 버전 조회하기
    pyenv version

4-1. pyenv install / pyenv uninstall

원하는 버전의 Python을 PC에 설치할 때는 pyenv install을 이용하면 된다.

예) Python 3.12.3 버전이 필요할 때

pyenv install 3.12.3

위와 같이 입력하면 아래와 같이 해당 버전이 설치되는 것을 볼 수 있다.

만약 버전을 잘못 설치했거나, 해당 버전이 필요없어졌을 경우에는 pyenv uninstall로 삭제할 수 있다.

pyenv uninstall 3.12.3

4-2. pyenv versions

현재 PC에 설치된 파이썬 버전들을 보려면 pyenv versions 를 입력한다.

pyenv versions

입력하면 아래와 같이 설치된 파이썬 버전들을 볼 수 있다.

4-3. pyenv global / pyenv local / pyenv shell

pyenv에서는 3계층으로 파이썬 가상 환경을 제공하는데,

각 계층은 이름으로 유추할 수 있듯 아래와 같다.

  1. global : PC 전역에서 사용하는 파이썬 버전
  2. local : 현재 프로젝트에서 사용하는 파이썬 버전
  3. shell : 현재 쉘 세션에서 사용하는 파이썬 버전

global은 일반적으로 파이썬 설치 파일을 통해 PC에 설치해서 쓰는 것처럼, PC 전역에서 사용하기 위한 파이썬 버전을 설정하는 영역이며,
local은 제한된 경로 (또는 프로젝트) 내에서만 사용하기 위한 파이썬 버전,
shell은 임시로 특정 cmd 세션 안에서만 사용하기 위한 파이썬 버전을 뜻한다.

global, local은 어렵지 않게 이해가 가능할 거라 생각되는데, shell에 대해 부연설명을 하자면,
Python 3.11.4 위에서 개발을 하다가 "어? 이거 Python 3.12.3 위에서도 잘 돌아가나?" 싶을 때, 쉘을 하나 열고 pyenv shell 3.12.3를 입력하면 그 쉘에서만 Python 버전이 3.12.3이 된다.

단 3.12.3 버전으로 테스트를 하고 싶을 때는 당연하지만 pnenv install 3.12.3을 통해 해당 버전이 PC에 설치된 상태여야 한다.

4-3-1. pyenv global

전역에서 쓰기 위한 파이썬 버전을 설정해보자.

먼저 필자는 이해를 돕기 위해 아래와 같이 PC에 Python 버전을 3개 설치한 상태이다.

  • Python 3.10.11
  • Python 3.11.9
  • Python 3.12.3

전역으로 3.10.11 을 사용하도록 하려면 아래와 같이 pyenv global 3.10.11을 입력하면 된다.

pyenv global 3.10.11

그러면 pyenv global version 입력 시 방금 입력한 3.10.11 버전으로 설정된 것을 볼 수 있다.

pyenv version

4-3-2. pyenv local

특정 경로 (또는 프로젝트)에서 쓰기 위한 파이썬 버전을 설정해보자.

먼저 필자는 바탕 화면에서 test-pyenv 라는 이름으로 폴더를 하나 만들었다.

mkdir test-pyenv
cd test-pyenv

해당 폴더 안에서 pyenv version을 입력하면 global로 설정된 3.10.11이 출력되는데,

여기서 pyenv local 3.11.9를 입력하여 버전을 변경해보자.

pyenv local 3.11.9

그리고 pyenv version을 입력하면 아래와 같이 3.11.9 버전이 출력된다.

신기해서 디렉토리 밖으로 나간 후 버전을 조회해보면 global에서 설정한 3.10.11 버전이 출력되는 것을 볼 수 있다.

왜 그런가 보면, pyenv local을 실행한 폴더 안에서 dir 입력 시 .python-version 파일이 생성되는 것을 볼 수 있다.

해당 파일을 열어보면 local로 설정한 버전명이 기입되어있다. 이를 통해 pyenv가 해당 파일을 보고 버전을 적용하는 것이라 유추할 수 있다.

혹시 그러면 global로 설정한 버전도 어딘가에 .python-version 파일이 생기는 것일까? 싶었지만 찾아보진 않았다.

4-3-3. pyenv shell

현재 열린 쉘에서만 파이썬 버전을 바꿔보자.

위에서 생성한 폴더 내에서 쉘을 두 개 연 후, 하나의 쉘에서 아래 명령어를 입력한다.

pyenv shell 3.12.3

그리고 버전을 확인하면 3.12.3 으로 설정된 것을 볼 수 있으며, 반대편 쉘에서 버전 확인 시에는 기존의 local 버전을 유지하는 것을 볼 수 있다.

이를 통해 특정 쉘 세션에서만 임시 버전을 이용하여 파이썬 코드를 테스트해볼 수 있는 것이다.

5. 결론

Python은 버전 릴리즈 속도가 매우 빨라서, 언젠가 PC에 설치해놨던 버전이 몇 달 지나면 구닥다리가 되는 경우가 많다. 이 때 pyenv를 사용하면 공식 홈페이지에서 설치 파일을 받아서 설치를 하고... 이전 버전을 지우고... 패키지를 옮기니 환경 변수를 바꿔주니 하는 번거로운 과정을 줄일 수 있다. 동시에 프로젝트마다의 파이썬 버전 변경이 용이하기 때문에 사용법에 익숙해지면 좋을 것 같다.

이 밖에도 여러 가지 명령어들이 있으니 필요에 따라 찾아서 써보면 좋을 것 같다.

profile
개발자입니당 *^^* 깃허브 https://github.com/pikamonvvs

0개의 댓글