EC2 인스턴스(Aamzon Liunx2)에 파이썬3.8 을 다운받아보자

2022.06.30

안녕하세요.
혹시 EC2 인스턴스에 파이썬을 다운받은 적 있으신가요?
물론 EC2 인스턴스에는 파이썬이 다운되어 있지만 다른 버전의 파이썬이 필요한 경우가 있습니다.
이 블로그에서는 파이썬3.8 버전을 다운받고, 파이썬 버전을 관리하며 사용하는 방법까지 알아보겠습니다.

EC2 파이썬 버전 확인

먼저 파이썬의 버전부터 확인해보겠습니다
아마존 리눅스2 인스턴스에는 awscli가 설치되어 있는데 파이썬도 함께 포함되어 있습니다.

aws --version
# aws-cli/1.18.147 Python/2.7.18 Linux/5.10.118-111.515.amzn2.x86_64 botocore/1.18.6

파이썬 버전을 확인해봐도 다음과 같습니다.

python --version
# Python 2.7.18

평범하게 다운받아보기

한 번 다운을 받아보겠습니다.

sudo yum install python3.8
# Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
# amzn2-core                                               | 3.7 kB     00:00
# No package python3.8 available.
# Error: Nothing to do

python3.8 패키지를 사용할 수 없다는 안내가 출력되고 다운받아지지 않습니다.

파이썬 다운받기

이번에는 제대로 다운을 받아보겠습니다.
먼저 아마존 리눅스2 인스턴스에서 파이썬을 다운받기 위해서는 amazon-linux-extras 라는 패키지가 필요합니다.
다운받아져 있는지 확인해주겠습니다.

/usr/bin/amazon-linux-extras
#   0  ansible2                 available    \
#         [ =2.4.2  =2.4.6  =2.8  =stable ]
#   2  httpd_modules            available    [ =1.0  =stable ]
#   3  memcached1.5             available    \
#         [ =1.5.1  =1.5.16  =1.5.17 ]
#   5  postgresql9.6            available    \
#         [ =9.6.6  =9.6.8  =stable ]
#   6  postgresql10             available    [ =10  =stable ]
#   9  R3.4                     available    [ =3.4.3  =stable ]
#  10  rust1                    available    \
#         [ =1.22.1  =1.26.0  =1.26.1  =1.27.2  =1.31.0  =1.38.0
#           =stable ]
#  11  vim                      available    [ =8.0  =stable ]
#  18  libreoffice              available    \
#         [ =5.0.6.2_15  =5.3.6.1  =stable ]
#  19  gimp                     available    [ =2.8.22 ]
# ...

다음과 같이 뭔가 많은 목록이 많이 나온다면 설치되어 있는 것입니다.
만약 설치되어 있지 않다면 다운받아줍니다.

sudo yum install -y amazon-linux-extras

다음으로 설치할 파이썬3.8 버전을 활성화 시켜주겠습니다.
활성화시키면 다음과 같이 available -> enabled 로 변경됩니다.

amazon-linux-extras | grep python3.8
# 44  python3.8                available    [ =stable ]

sudo amazon-linux-extras enable python3.8

amazon-linux-extras | grep python3.8
# 44  python3.8=latest         enabled      [ =stable ]

다음으로 실제로 파이썬 3.8 버전을 다운받습니다.

sudo yum install python3.8

그럼 실제로 다운받아진 것을 확인할 수 있습니다.

ls -l /usr/bin/python3.8
-rwxr-xr-x 1 root root 7048  2월 18  2021 /usr/bin/python3.8

파이썬 버전 관리

파이썬3.8을 다운은 받았지만 아직 사용할 수는 없습니다.
이번에는 파이썬 버전을 관리하면서 사용하는 방법에 대해 정리해보겠습니다.

일단 내가 가지고 있는 파이썬 버전을 확인하겠습니다.

ls /usr/bin/ | grep python
# python
# python-config
# python2
# python2-config
# python2.7
# python2.7-config
# python3
# python3.7
# python3.7m
# python3.8

실제로 사용하고 있는 파이썬의 버전에 대해서도 확인하겠습니다.

python --version
# Python 2.7.18

which python
# /usr/bin/python

ls -al /usr/bin/python
# lrwxrwxrwx 1 root root 7  6월 13 18:52 /usr/bin/python -> python2

그럼 이번에는 update-alternatives 을 사용해서 파이썬 버전을 변경해보겠습니다.

해당 명령어를 입력했을 때 아무런 파이썬도 등록되어 있지 않으면 아무런 결과도 나오지 않습니다.

sudo update-alternatives --config python

실제로 등록하겠습니다.

# update-alternatives --install [심볼릭 링크 경로] python [파이썬 실제 경로] [우선순위 숫자]
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

등록 후 다시 명령어를 실행해보면 등록된 파이썬을 확인할 수 있습니다.

sudo update-alternatives --config python
# 1 개의 프로그램이 'python'를 제공합니다.

#   선택    명령
# -----------------------------------------------
# *+ 1           /usr/bin/python3.8
#    2           /usr/bin/python2.7

# 현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오:

현재는 우선순위가 위인 python3.8 이 설정되어 있습니다.

python --version
# Python 3.8.5

하지만 만약에 다시 python2.7 버전으로 돌아가고 싶다면 python2.7 을 등록하고 (블로그에서는 미리 등록해놨습니다.) 다음과 같이 선택 번호를 입력해서 버전을 변경합니다.

sudo update-alternatives --config python
# 1 개의 프로그램이 'python'를 제공합니다.

#   선택    명령
# -----------------------------------------------
# *+ 1           /usr/bin/python3.8
#    2           /usr/bin/python2.7

# 현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오: 2

그럼 다음과 같이 파이썬 버전은 다시 변경되게 됩니다.

python --version
# Python 2.7.18

여기까지가 파이썬3.8 버전의 설치과 버전 관리 방법이었습니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !