저번 글에서는 Windows에서 AWS EC2에 접속하는 방법(https://dslyh01.tistory.com/6)에 대해 살펴보았습니다. 본 글에서는 AWS EC2에 접속한 이후, Python3을 설치하는 방법에 대해 알아보고자 합니다. 저는 Linux 환경 사용이 거의 처음이었기 때문에, 설치하면서 발생하는 오류와 해결 과정에 대해서도 차근차근 정리해봤습니다.
1. Python3 설치
우선 AWS EC2에 설치되어있는 Python을 확인해줍니다. 다음과 같은 코드를 실행하면 설치되어있는 Python이 나타나게 됩니다. 저의 경우에는 Python2.7과 Python3.7이 설치되어있었는데, 필요한 버전이 3.9.7이었기 때문에 추가적인 설치 과정을 진행하였습니다. 아래 코드의 '00@00'은 설명을 위해 임시로 넣은 것입니다.
[00@00 ~]$ ls /usr/bin | grep python
python
python2
python2.7
python2.7-config
python2-config
python3
python3.7
python3.7m
python-config
개인이 소유한 AWS EC2가 아니었기 때문에, 'sudo su -'를 통해 root 계정에 접근하였습니다. 우선 원하는 버전을 압축된 파일의 형태로 다운로드받습니다.
[root@00 ~]# wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz
다운로드받은 파일을 압축해제합니다.
[root@00 ~]# tar zxvf Python-3.9.7.tgz
압축해제한 파일에 접근한 이후, 컴파일을 진행해야합니다. 이 과정에서 첫 번째 에러가 발생했습니다. 발생한 에러에 대해 검색해보니, gcc나 c 컴파일러 등이 없기 때문에 발생한 것이라고 합니다.
[root@00 ~]# cd Python-3.9.7/
[root@00 Python-3.9.7]# ./configure --enable-optimizations
...
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details.
따라서 다음과 같이 설치를 진행해주면 에러가 해결됩니다.
[root@00 ~]# yum install gcc glibc glibc-common gd gd-devel
다시 컴파일을 진행하고, 설치 코드를 실행하면 Python3.9.7 버전의 설치가 완료됩니다.
[root@00 Python-3.9.7]# ./configure --enable-optimizations
[root@00 Python-3.9.7]# make altinstall
'exit'을 통해 다시 처음으로 돌아가서 Python을 실행하면, default가 Python2 버전으로 되어있을 것을 확인할 수 있습니다.
[root@00 Python-3.9.7]# exit
logout
[00@00 ~]$ python
Python 2.7.18 (default, May 25 2022, 14:30:51)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-15)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Python 상에서 exit() 함수를 통해 Python을 종료한 이후, AWS EC2 상에 설치되어있는 여러 Python 버전들이 어느 폴더에 설치되어있는지 확인합니다. 이 경로를 잘 확인해주셔야 합니다.
[00@00 ~]$ which python2.7
/usr/bin/python2.7
[00@00 ~]$ which python3.7
/usr/bin/python3.7
[00@00 ~]$ which python3.9
/usr/local/bin/python3.9
다음과 같은 코드를 통해 각 Python 버전들의 alternative를 등록합니다. 이 때, 두 번째 에러가 발생했습니다. 저의 경우에는 새로 설치한 Python3.9 버전이 당연히 2.7과 3.7 버전이 설치되어있는 폴더에 설치되었을 것이라고 생각하여 경로를 동일하게 지정하였더니 경로를 찾을 수 없다는 에러가 발생했었습니다. 경로를 자세히 보니 3.9 버전은 local에 설치되어있어서 발생한 에러였습니다. 따라서 위의 경로를 잘 참고하셔야 합니다.
[00@00 ~]$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
[00@00 ~]$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 2
[00@00 ~]$ sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.9 3
alternative를 등록한 이후, 'Enter to keep the current selection[+], or type selection number: ' 뒤에 3.9 버전에 해당하는 '3'을 입력하면 python을 실행했을 때, 3.9.7 버전이 실행됩니다. 이렇게 되면 Python3.9.7 버전의 설치가 완료됩니다. 만약 2.7과 3.7 버전이 설치되어있고, 3.7 버전을 그대로 사용해도 된다면 alternative 등록부터 진행해주시면 됩니다.
[00@00 ~]$ sudo update-alternatives --config python
There are 3 programs which provide 'python'.
Selection Command
-----------------------------------------------
+ 1 /usr/bin/python2.7
2 /usr/bin/python3.7
* 3 /usr/local/bin/python3.9
Enter to keep the current selection[+], or type selection number: 3
[00@00 ~]$ python
Python 3.9.7 (default, Jul 18 2022, 10:02:19)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
(추가) yum 에러 발생 및 해결
default를 Python3 버전으로 설정한 이후, yum을 활용하게 되면 다음과 같은 에러가 발생하게 됩니다.
[00@00 ~]$ sudo yum update
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax
이는 yum이 python2 버전을 기반으로 실행되기 때문에 발생하는 에러입니다. 따라서 yum의 스크립트를 변경해주어야 합니다. 스크립트를 확인해보면 가장 윗부분이 'python'으로만 된 것을 확인할 수 있습니다.
[00@00 ~]$ cat /usr/bin/yum
#!/usr/bin/python
...
해당 부분을 'python2'로 수정만 해주면 됩니다. 여기서 다음과 같은 편집기를 사용하게 되는데, 일반적인 메모장처럼 사용하는 줄 알았더니 아니었습니다. vi 편집기 명령어는 다음 블로그(https://blockdmask.tistory.com/25)에 잘 정리되어있으니 참고하시면 좋을 것 같습니다. 'python'을 'python2'로만 수정을 하면 되기 때문에, 저는 'i'와 'wq' 명령어만 사용하였습니다. yum의 스크립트와 더불어 또 하나의 파일도 동일하게 수정해주면 yum 에러를 해결할 수 있습니다.
[00@00 ~]$ vi /usr/bin/yum
#!/usr/bin/python2
...
[00@00 ~]$ vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2
...
'Data Engineering > AWS' 카테고리의 다른 글
[AWS] Python에서 AWS S3에 파일, 폴더 업로드/다운로드 (4) | 2023.10.17 |
---|---|
[AWS] Jupyter Notebook 설치 및 실행 (0) | 2022.08.02 |
[AWS] Windows에서 AWS EC2 접속하기 (0) | 2022.07.13 |
댓글