윈도우에서 우분투 리눅스에 장고 서비스 배포하기 #2 (pyenv로 파이썬 최신버전 설치)

[바닥부터] 리눅스에 장고 서비스를 배포해보자 (진행 중)

2023년 2월 기준으로 3.11.2가 최신 버전인데요. 우분투 20.04 버전에는 파이썬 3.8이 설치되어있습니다. 조금 오래된 버전이죠. 장고에서도 최신버전의 파이썬을 쓰기를 권장하고 있습니다. pyenv를 통해 최신 버전의 파이썬을 설치하는 방법에 대해서 살펴보겠습니다. 시스템에 설치된 파이썬은 그대로 지켜주세요. ;-)

pyenv로 파이썬 최신버전 설치하기

시스템 팩키지 설치

윈도우에서의 파이썬 설치는 빌드된 바이너리를 복사하는 형태로 진행이 되지만, 리눅스에서는 소스코드를 다운받아 컴파일하는 형태로 파이썬 설치가 진행됩니다. 소스코드를 컴파일하기에 의존성있는 시스템 팩키지 설치가 필요합니다.

앞선 #1편에서 VirtualBox에 리눅스를 설치해봤습니다. 편하신 터미널 프로그램으로 우분투 리눅스에 접속해주세요.

먼저 캐싱된 시스템 팩키지 목록을 업데이트해야합니다. 시스템 팩키지는 워낙 방대하기에 그 목록을 캐싱해두고 캐싱된 목록에서 조회하거든요.

sudo apt-get update

다음 명령으로 파이썬 빌드에 필요한 라이브러리 설치해주세요.

sudo apt install -y \
    git gcc make zlib1g-dev libffi-dev libbz2-dev libssl-dev \
    libreadline-dev libsqlite3-dev python3-tk tk-dev \
    liblzma-dev

573e95f1e2d04eb5bede5c0f77e23c9f.jpg

리눅스 단축어 Tip

  • Ctrl-U : 명령행에서 명령어를 입력하시다가, 입력했던 그 줄(Line)을 모두 삭제하고 싶으신가요? 혹은 로그인 암호를 입력하다가 잘못 입력한 암호를 한 번에 지우고 싶으신가요? 그럴 때 백스페이스를 여러 번 입력하지 않으셨나요? 그럴 때 Ctrl-U 키 한 번이면 해결됩니다.
  • Ctrl-C : 윈도우 GUI에서는 Copy 단축키지만, 리눅스 등의 터미널 환경에서는 현재 실행 중인 프로세스나 명령을 즉시 종료하는 데 사용됩니다. 윈도우에서도 python manage.py runserver 개발서버를 중단시킬 때 Ctrl-C 키를 입력하지 않으셨나요? 터미널 프로그램 종류에 따라 Ctrl-C 키가 상황에 따라 Copy로 동작하기도 합니다.

pyenv 설치하기

이제 pyenv를 설치해봅시다. pyenv 공식문서에서 다양한 설치방법을 안내하고 있는 데요. 그 중에 git을 활용해서 설치해보겠습니다.

아래 명령으로 ~/.pyenv 경로에 pyenv를 설치합니다.

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
git clone https://github.com/pyenv/pyenv-update.git ~/.pyenv/plugins/pyenv-update

그리고, 사용하시는 쉘(shell) 설정파일에 다음 설정을 추가해주시고 exit 명령으로 연결을 종료했다가 다시 접속해서 설정을 로딩하시면, 기본적인 pyenv 설치는 끝났습니다. 사용하시는 쉘은 echo $SHELL 명령으로 확인하실 수 있습니다.

  • bash 쉘 : ~/.bashrc
  • zsh 쉘 : ~/.zshrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

리눅스에서의 파일 편집에 대해서는 리눅스 CLI 에서 텍스트 파일을 편집하는 3가지 방법 포스팅을 참고해주세요.

bdbef9c1b96a40fda2397693e337792d.jpg

pyenv로 파이썬 설치하기

차근차근 최신버전의 파이썬을 설치해봅시다.

cfa32cf2734f46e185f485c1ef999af3.jpg

설치가능한 파이썬 배포판 목록을 출력해봅니다. 목록이 너무 길기에 | head 파이프를 통해 처음 10줄만 출력해봤습니다. | grep 파이프를 통해 3.11 버전만 추려서 출력해봅니다.

6dffad5adb074291894246d8675d28b1.jpg

저는 3.11 버전 중에 3.11.2 버전이 최신버전이네요. 3.11.2 버전을 pyenv를 통해 설치해보겠습니다.

b517a0f65eb24e4b897dd0f8aaaec6f1.jpg

설치한 3.11.2 버전을 pyenv 디폴트 버전으로 지정합니다. 그럼 별도의 설정/명령없이도, 현재 로그인 유저가 쉘에 접속하면 python 명령으로 3.11.2 버전이 동작할 것입니다.

b2f8e45aeb184e58ab702c92d7106665.jpg

pyenv를 통해 설치한 버전들도 확인하실 수 있습니다.

49a5cccb447142e3b94a6831ce8a99b8.jpg

pyenv로 다양한 파이썬 버전 사용하기

새로운 프로젝트에서 파이썬 3.10을 써야하는 상황을 가정해보겠습니다.

아래 명령으로 pyenv로 설치 가능한 3.10 최신 버전을 확인해봅니다. 3.10.10이 최신버전이네요.

79b91499a0be4aed87cf585be72051b9.jpg

이제 3.10.10 버전을 설치해야겠죠.

44f6670b840841fc9109413cede59068.jpg

시스템 디폴트 파이썬은 3.11.2를 쓸 것이기에 pyenv global 명령은 사용하지 않습니다. 프로젝트 루트 디렉토리로 이동하신 뒤에 pyenv local 명령으로 그 프로젝트에서 사용할 파이썬 버전을 지정합니다.

1cac53c854b9432aac92d640732da445.jpg

현 디렉토리에서 ls -a 명령을 수행하면 .python-version 파일이 보입니다. cat .python-version 명령을 내려보시면 pyenv local 명령에서 지정한 버전이 지정되어있음을 확인하실 수 있습니다. pyenv가 이 파일을 살펴보고 실행할 파이썬 버전을 인지합니다.

상위 디렉토리로 이동하면, 파이썬 버전이 다시 3.11.2로 나옵니다.

98e8b95cc5e5438f9faeba9ea2982d53.jpg

하나의 프로젝트에서 여러 멤버의 파이썬 버전을 맞춰야한다면 .python-version 파일을 버전관리 대상으로 추가하셔도 좋습니다.

그리고, pyenv를 쓰더라도 프로젝트마다 가상환경(venv)을 생성해서 활용하시는 것을 추천드립니다. ;-)

6e5e5eab5cb5433084e12dc89de4696b.jpg

리눅스 쉘 환경, 파이썬, 가상환경에 익숙지신 후에 pyenv-virtualenv, autoenv 라이브러리도 써보세요. 처음에는 복잡한 듯 보이지만, 편리하게 pyenv와 가상환경을 관리하실 수 있습니다. ;-)

핵심 pyenv 명령

  • pyenv update : pyenv로 설치할 수 있는 목록(캐싱된)을 업데이트합니다.
  • pyenv install --list : pyenv로 설치할 수 있는 목록을 보여줍니다.
    • 3.11.2 처럼 숫자만 적혀있는 버전은 파이썬 기본 배포판
    • 윈도우의 pyenv-win은 파이썬 기본 배포판 만을 지원하지만, 리눅스의 pyenv는 anaconda3, graalpython, ironpython, jython, micropython, miniconda, pypy, pyston, stackless 등 다양한 파이썬 배포판을 지원합니다.
    • 3.11 버전만 볼려면? -> pyenv install --list | grep 3.11
  • pyenv install 버전명
    • 원하는 버전의 파이썬을 다양하게 설치하실 수 있습니다. 프로젝트마다 사용할 파이썬 버전을 손쉽게 지정할 수 있기에, 여러 파이썬 버전을 설치하더라도 꼬이지 않습니다.
    • 파이썬 소스코드를 다운받아 설치되기에, 설치 시간이 다소 오래 걸릴 수 있습니다. 이 과정을 위해 위의 "시스템 팩키지" 설치가 필요했던 것입니다.
  • pyenv versions
    • 설치된 파이썬 버전을 출력합니다.
  • pyenv global 버전명
    • 지정 버전의 파이썬을 디폴트 버전으로 지정합니다.
  • pyenv local 버전명
    • 특정 경로 내에서 사용할 파이썬 버전을 지정합니다.
    • 여러 파이썬 버전이 설치되어 있고, 특정 프로젝트에서 사용할 파이썬 버전을 지정코자 할 때 주로 사용합니다.
  • pyenv uninstall 버전명 : 지정 버전의 파이썬을 삭제합니다.

(계속)

  • 마지막 편집일시 : 2023년 4월 6일 4:08 오후
  • 최초 생성일시 : 2023년 2월 26일 12:07 오전
🌟 본 포스팅이 도움이 되셨다면 댓글 하나 남겨주시고, 널리 공유도 부탁드립니다. 🌟

댓글

Seongwoo_Lukaid's avatar
Seongwoo_Lukaid 2023년 2월 28일 1:09 오후 (KST)

진석님 강의 듣고 pyenv 너무 편하게 잘 사용하고있습니다!!

이진석's avatar
이진석 2023년 3월 1일 12:45 오후 (KST)

편하게 사용하신다니, 너무 보람차고 기쁘네요. 감사합니다. ;-)