JUINTINATION
AWS Ubuntu 22.04 LTS EC2 파이썬 버전 변경하기 본문
이번에 종설 준비를 하면서 이미지 스티칭 서버를 이것 저것 해보면서 배포 관련 테스트를 진행중이었다. 지금까지 Flask로 구현된 서버가 AWS로 올라가 있었는데 관련 정보가 너무 부족해서 결국 Elastic Beanstalk으로 올리는 것을 실패했었다. 그래서 FastAPI로 다시 구현하고 재도전해봤는데 똑같은 오류가 발생했다. 이 과정에서 기존의 인스턴스를 비롯한 관련 설정들을 모두 삭제한 상태였는데, 이를 다시 처음부터 설정을 해야했다.
파이썬 버전 문제
처음 Amazon Ec2 시작하기 글을 작성했을 때와 같은 방법으로 인스턴스를 다시 만들었을 때 파이썬 버전은 3.12였나 아무튼 필요한 파이썬 버전인 3.8 버전과 맞지 않았다. 그래서 파이썬 버전을 바꾸려고 이것 저것 해봤는데 결론적으로 기본적인 방법으론 설치가 불가능했다. 그래서 여러 블로그들을 돌아다니면서 인스턴스를 3번정도 지웠다가 다시 만들면서 생각보다 오래 삽질을 계속하게 되었다.
Ubuntu 22.04 LTS에 Python 3.8 설치
먼저 다음 명령어를 통해 시스템의 패키지 목록을 새로고침하고, 설치된 패키지를 업데이트한다.
$ sudo apt update && sudo apt upgrade
이후 다음 명령어를 통해 software-properties-common 패키지를 설치하고, deadsnakes PPA를 시스템의 소프트웨어 소스에 추가한다.
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:deadsnakes/ppa
그리고 다음 명령어로 python3.8 패키지의 설치 가능한 버전과 현재 설치된 버전(있는 경우)에 대한 정보를 표시하고, 있다면 설치한다.
$ sudo apt-cache policy python3.8
$ sudo apt install python3.8
참고한 블로그는 아래와 같다.
python3 설정하기
이후 다음 명령어로 /usr/bin 디렉토리에 있는 모든 Python 3 관련 실행 파일의 상세 정보를 표시하면 아래와 같이 화살표로 python3가 python3.12로 symbolic link 되어 있는 것을 확인할 수 있다.
$ ls -al /usr/bin/python3*
그렇다면 다음 명령어로 python3가 방금 설치한 python3.8로 symbolic link 되도록 한 뒤 다시 이전 명령어로 확인해보면 아래와 같이 화살표로 python3가 python3.8로 symbolic link 되어 있는 것을 확인할 수 있다.
$ sudo ln -fs /usr/bin/python3.8 /usr/bin/python3
참고한 블로그는 아래와 같다.
pip 설치하기
이후 $ pip --version
혹은 $ pip3 --version
명령어를 실행시켜보면 설치가 되어 있지 않기 때문에 다음 명령어로 pip를 설치한다.
$ sudo apt install python3-pip
하지만 이후 다시 $ pip -- version
명령어를 실행시켜보면 아래와 같이 ModuleNotFoundError: No module named 'distutils.cmd'
에러가 뜰 것이다.
그러면 다음 명령어로 Python 3.8용 distutils 패키지를 설치한다.
$ sudo apt-get install python3.8-distutils -y
그러면 아래와 같이 정상적으로 pip의 버전이 뜨는 것을 확인할 수 있다.
참고한 블로그는 아래와 같다.
결론
굉장히 오랜만에 쓰는 글인 것 같다. 학술제 준비를 위해 판넬도 만들고, 피피티도 만들고, 백엔드 API 서버 코드도 수정해보고, 뭐 이것 저것 많이 했는데 글로 적을만한 것들은 아니라 넘어갔던 것 같다. 뭔가 굉장히 바쁜데 하나도 안 바쁜 이 기분은 뭘까..
아무튼 이후에도 엘라스틱 빈스톡으로 배포하려고 많이 연구했지만 결국 필요한 패키지가 용량 문제인지, 버전 문제인지, 시스템 문제인지, 아무튼 설치가 제대로 되지 않아서 결국 실패했다. 아, 모르겠다. 일단 지금 당장 내가 할 수 있는 것들을 하자!
p.s. 파이썬 너무 싫어.. 미워..
'Amazon Web Services' 카테고리의 다른 글
AWS 엘라스틱빈스톡 504 Gateway Timeout 에러 (4) | 2024.11.05 |
---|---|
AWS 엘라스틱빈스톡으로 React 프로젝트 배포하기 (1) | 2024.11.05 |
AWS 엘라스틱빈스톡 413 Request Entity Too Large 오류 (0) | 2024.07.29 |
GitHub Actions를 활용한 CI/CD 배포 (0) | 2024.07.19 |
CI/CD(지속적 통합/지속적 배포)란? (1) | 2024.07.19 |