Home [Linux] Linux Python3 기본 버전 변경
Post
Cancel

[Linux] Linux Python3 기본 버전 변경

BNO055 라는 9-DoF IMU 센서를 사용하기 위해 Document에 따라

pip3 install adafruit-circuitpython-bno055

명령어 입력 시 SyntaxError: future feature annotations is not defined 가 발생했다. Python version과 관련된 문제라 이를 해결하기 위한 방법을 정리해 보았다.


Python, Python3 버전 확인

$ python --version

$ python3 --version

라즈베리파이에서는 ubuntu 18.04에 관한 공식적인 지원이 중단되어 Unofficial Github에서 이미지 파일을 받아서 설치했다.

2023.07.27 기준 라즈베리파이 공식 홈페이지 2023.07.27 기준 라즈베리파이 공식 홈페이지

ubuntu 18.04의 경우 기본적으로 python » Python 2.7.17, python3 » Python 3.6.9 가 설정되어 있다. 이 설정을 바꾸기 위해서는 먼저 새로운 Python 버전을 설치해야 한다.


Python 새로운 버전 설치

$ sudo apt-get install python[version]

Example
$ sudo apt-get install python3.7

설치를 완료했다고 바로 적용되는 것이 아니고 기본 버전을 변경해 주어야 한다.

Python3.8보다 높은 버전 설치 시에는 해당하는 패키지를 찾지 못하는 문제가 발생한다.
$ sudo add-apt-repository ppa:deadsnakes/ppa 명령어를 통해 레포지토리를 등록 후에도 같은 문제가 발생.
(필자의 경우 : Jetson Nano)
이러한 경우 wget 명령어 등으로 수동 설치하는 방법이 있는 것 같은데 시도해보진 않았다.
대신 3.8을 설치 하였다. (Jetson Nano)


Python 기본 파일 확인

$ ls -al /usr/bin/python 명령을 통해 python 이 가리키는 기본 파일을 확인할 수 있다.

💡 Tip!
which, whereis 명령어로 명령어(command)의 위치를 알 수 있다.

Ex. $ which python
/usr/bin/python


등록된 Python 버전 확인

확인 할 경우 python2.7을 가리키고 있는데 이를 변경하기 위해선 먼저 설치한 python 버전을 등록해야 한다.
먼저 등록된 python version을 확인하는 명령어는 아래와 같다.
$ update-alternatives --config python

현재는 아무것도 등록이 되어있지 않을 것이다. 이제 새로 설치한 python version을 등록한다.


설치한 버전 등록

python 명령어에 등록
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python[version] [지정 번호]
python3 명령어에 등록
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python[version] [지정 번호]

필자의 경우 pip3로 설치 과정에서 발생한 오류이기 때문에 python3의 버전을 수정해주어야 한다.
위 명령어 실행 후 다시 $ update-alternatives --config python 명령어 입력 시 등록한 버전이 나오는 것을 확인할 수 있다.
기본으로 실행시키고자 하는 버전을 가리키는 번호를 입력 후 enter

이후에 다시 python / python3 버전 확인시 버전이 변경된 것을 볼 수 있다.

python3 버전을 변경 후 pip3를 통해 다시 설치 시에 정상적으로 설치 되는 것을 확인 할 수 있었다.

pip3 down pip3 install adafruit-circuitpython-bno055 명령어 정상실행


참고자료

[Raspberry Pi] 리눅스 파이썬3 설치 및 기본 사용 버전 변경하기
[에러 해결] ‘SyntaxError: future feature annotations is not defined’
Stack Overflow - SyntaxError: future feature annotations is not defined

This post is licensed under CC BY 4.0 by the author.