본문으로 바로가기

오늘은 우분투에서 파이썬(선)을 업데이트 하는 방법을 알아 보겠습니다.

(버전이 달라져도 방법은 동일할 것으로 생각합니다.)

현재 사용하고 있는 우분투 버전에 따라 python 3.6 설치 방법이 달라지므로(참고: askubuntu.com)

우선 우분투와 우분투 배포판의 버전 확인 방법을 알아보고 안전한 python3 설치를 위하여 설치된 python의 버전과 설치 위치를 확인하는 방법을 알아보겠습니다.


우분투 및 관련 배포판(대표적으로 민트가 있죠)에서 배포판의 명칭 및 기반 우분투 버전을 확인하기 위해서는 두개의 명령으로 확인이 가능합니다.


배포판 명칭 및 기반 우분투 버전 확인

cat /etc/issue

uname -a

설치되어 있는 파이선의 버전을 확인

python -V

python3 -V

실제 설치된 위치확인

which python

which python3

확인된 위치의 파일이 실행파일인지 링크인지를 확인(설치된 버전 변경을 용이하게 하기 위하여 대부분 심볼릭 링크입니다.)

ls -al python

ls -al python3


위의 명령을 차례대로 수행하시면 아래화면과 같은 모습을 확인할 수 있으며 비교를 위해 우분투 17.10 버전에서의 예시도 첨부 하였습니다.

Ubuntu 17.10은 한글문제 wayland관련 버그로 사용이 원할치 않아서 제가 사용중인 Linus Mint 18.2 Sonya에서 python 3.6을 설치하려고 합니다.


Linus Mint 18.2 Sonya 예시화면

* 우분투 17.10.1 예시화면



우분투 버전에 따라 python 3.6 설치 방법이 다르므로 우분투 버전에 따른 python 3.6 설치방법을 표로 정리해 보았습니다.(참고: askubuntu.com)


우분투버전

버전별 python 3.6 설치방법

 Ubuntu 16.04

python3.6 이 universe repository에 등록되어 있지 않아 컴파일 또는  PPA로 부터 설치해야 합니다.

저는 PPA를 이용해서 설치 했습니다.(PPA에 대해서는 "우분투 PPA 저장소란? 추가,제거 방법" 포스트를 참고하시면 좋겠습니다.)


1.컴파일 해서 설치하는 방법

sudo apt install build-essential checkinstall
sudo apt install libreadline
-gplv2-dev libncursesw5-dev

sudo apt install libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz

tar xvf Python-3.6.0.tar.xz
cd
Python-3.6.0/
./configure
sudo make altinstall


2. PPA로 부터 설치하는 방법

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt update
sudo apt install python3
.6


sudo add-apt-repository ppa:deadsnakes/ppa => 3.7


Ubuntu 16.10 and

Ubuntu 17.04


universe repository에 이미 등록이 되어 있으므로 아래 명령으로 바로 설치가 가능합니다.


sudo apt-get update
sudo apt
-get install python3.6


 Ubuntu 17.10


python 3.6.3이 기본 탑재되어 있지만 wayland와 한글의 압박이 있습니다.

xorg를 사용하는 방법도 있지만 저는 하위 버전의 우분투를 쓰는 것이 더 좋다고 생각합니다.




위 방법으로 python3.6은 설치되지만 기존에 설치된 python3(저는 3.5.2)을 삭제하지 않았으므로 설치후에도 python3는 기존 버전으로 실행되므로 기존 python3.5가 실행되는 원인을 확인하고 우분투에서 여러버전의 패키지를 관리할 수 있는 update-alternatives 명령어를 이용하여 기존에 설치되어 있던 python3.5 와 새로이 설치한 python3.6 버전을 둘다 이용할 수 있도록 해보겠습니다.


update-alternatives 명령어는 머가필요해님과 인환님의 포스팅을 참고 하시는 것이 좋을 것 같습니다.

머가필요해 님의 : update-alternatives (여러 버전의 패키지 관리하기)

인환 님의 :  우분투 여러 버전 패티지 관리하기 update-alternatives



python 3.6  설치전 현재의 python 설치 현황을 확인해 둡니다.
bonohemi@mate01 ~/app $ ls -alh /usr/bin/python*
lrwxrwxrwx 1 root root    9 10월 26 09:02 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root    9 10월 26 09:02 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3.4M 12월  5 03:14 /usr/bin/python2.7
lrwxrwxrwx 1 root root    9 10월 26 09:02 /usr/bin/python3 -> python3.5
-rwxr-xr-x 2 root root 4.3M 11월 29 01:53 /usr/bin/python3.5
-rwxr-xr-x 2 root root 4.3M 11월 29 01:53 /usr/bin/python3.5m
lrwxrwxrwx 1 root root   10 10월 26 09:02 /usr/bin/python3m -> python3.5m
bonohemi@mate01 ~/app $

이제 python 3.6을 PPA를 통해서 설치합니다.(전 vmware를 사용하는 지라 vm snapshot도 떠둡니다. 만사 불여 튼튼)
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt update
sudo apt install python3
.6

설치 후 python3 -V로 확인해 봅니다.



분명히 설치가 잘되었지만 여전히 python3는 기존의 3.5.2 버전입니다.

ls -alh /usr/bin/python* 명령으로  확인을 해보니 python3 심볼릭 링크가 여전히 /usr/bin/python3 -> python3.5와 같이 기존의 python3.5로 설정되어 있습니다.

즉 python3.6은 설치가 되었지만 기존의 심볼릭 링크는 바꿔주지 않기 때문에 기존과 같이 python3으로 새로이 설치된 python3.6을 사용하기 위해서는 후속 작업을 해주어야 합니다.



아래와 같이 python3 심볼릭 링크를 지우고 다시 만들어 주는 방법이 있지만 위에서 언급한 바와 같이 update-alternatives 명령을 이용하여 좀더 우아하게(?) python3버전을 선택할 수 있도록 해보겠습니다.

sudo rm /usr/bin/python3

sudo ln -s /usr/bin/python3.6 /usr/bin/python3



우선 update-alternatives명령어로 현재 python3의 심볼링 링크를 확인해 봅니다.

sudo update-alternatives --display python3



python3 alternatives 설정이 되어 있지 않다고 나오네요

기존의 python3 심볼릭 링크는 과감히 지워준 후 다시 심볼릭 링크를 조회해 봅니다.(확인을 위해서 하는 것이므로 심볼릭 링크를 꼭 지워야 하는 것은 아닙니다. update-alternatives 명령으로 기존 링크가 자동으로 바뀌어 지므로 아래 <<update-alternatives>> 설정을 바로 해도 됩니다.)

sudo rm /usr/bin/python3

ls -alh /usr/bin/python* 


심볼릭 링크가 지워졌으므로 python3명령을 입력해보면 그런 명령이나 파일을 찾을 수 없다고 합니다.


<<update-alternatives 설정>>

python3 alternatives 설정을 위해 아래의 명령을 차례대로 입력합니다.


sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

sudo update-alternatives --display python3

sudo update-alternatives --config python3



마지막 명령 sudo update-alternatives --config python3를 입력하면 몇번을 선택할 것인지를 물어보는데 디폴트로 0번이 되어 있고 1번이나 2번을 선택할 수 있습니다.

또한 위 그림과 같이  ls -alh /usr/bin/python* 명령으로 파이선 심볼릭 링크를 확인하면 이제는 python3 심볼릭 링크가 /etc/alternatives/python3를 가르치고 있습니다.


이전 : /usr/bin/python3 -> python3.5

현재 : /usr/bin/python3 -> /etc/alternatives/python3


이제는 필요에 따라서 sudo update-alternatives --config python3 명령으로 원하는 버전의 python3를 실행할 수 있게 되었습니다.