코디니팩의 파이썬 개발 환경

코디니팩의 파이썬 개발 환경

이 문서는 코디니팩 라즈베리파이 4파이썬에 대한 설명입니다.

  • 라즈베리파이 4에 2가지 버전의 파이썬이 설치되어 있어, 사용법을 설명합니다.
  • 또, 많은 분들이 파이썬 에디터로써 사용중인, 토니(Thonny) 파이썬의 설정법을 설명합니다.
  • 라즈베리파이 4에 대한 설명이지만, 라즈베리파이 3 사용자에게도 도움이 되는 내용입니다.

파이썬의 버전

  • 파이썬을 개발할 때 설치된 파이썬의 버전을 확인하는 것이 좋습니다.

  • 코디니팩에서는 파이썬 3.x 버전을 지원합니다.

    • 라즈베리파이 3은 3.5를 지원하고
    • 라즈베리파이 4는 3.5와 3.7을 지원합니다.
    • 혼란을 줄이려면 라즈베리3과 4에서 똑같이 3.5만 지원하는 것이 좋겠지만, 보다 최신 버전의 파이썬을 사용하고 싶은 사용자를 위해 라즈베리파이 4에서는 3.7을 추가로 지원하고 있습니다.

여러 버전의 파이썬 사용하기

  • 라즈베리파이 4에 파이썬 3.7을 추가 지원한 이유는, 사용자에게 보다 최신 버전의 파이썬도 사용할 수 있게 하기 위함이었는데, 의도치 않게 초보자분들에게는 더 어려워진 측면이 있습니다.

  • 코디니팩, 라즈베리파이 4를 사용하는 분들은, 여러 버전의 파이썬을 다루는 방법을 이해하면 파이썬 학습에 도움이 될 것 같습니다. 이것은 코디니팩 만의 얘기가 아닙니다. PC에서도 여러 버전의 파이썬이 설치될 수 있습니다.

  • 규칙이 간단하여 어렵지 않게 이해할 수 있을 것입니다.

  • 코디니팩의 파이썬은 3.5와 3.7 두 개의 버전이 있는데, python3 명령을 실행하면 어떤 파이썬이 실행될까요?

  • 파이썬의 버전은 python3 --version 명령으로 확인할 수 있습니다.

$  python3 --version
Python 3.7.3
  • 출력 결과가 Python 3.7.3이므로 파이썬 3.7임을 알 수 있습니다. python3.7 --version 명령을 실행해보면 동일한 결과를 얻을 수 있습니다.
$  python3.7 --version
Python 3.7.3
  • python3만 있으면 되지 햇갈리게 python3.7도 있을까 생각할 수 있습니다. python3python3.7의 바로가기 입니다. python3은 실체가 있는 것이 아니고 python3.7에 연결만 시켜놓은 것입니다.

  • 파이썬 3.5는 어떻게 실행될지 예상이 되시나요? python3.5 --version를 실행하면 됩니다.

$  python3.5 --version
Python 3.5.4
  • 파이썬 3.5에서 실행되는 코드는 3.7에서도 실행이 가능합니다. 하지만 반대는 항상 성립하는 것은 아닙니다. 3.7에서 처음 만들어진 기능인 경우 3.5에서 사용할 수 없습니다.

  • 참고로 최신 버전의 Thonny는 3.5를 지원하지 않습니다. Thonny에서 3.5를 사용하고 있다면 예전 버전의 Thonny일 것입니다.

  • 아래는 파이썬의 버전을 체크하는 예시 화면입니다.

    파이썬 버전 체크파이썬 버전 체크
  • 아래는 파이썬 3.7과 3.5로 간단한 파이썬 파일을 실행해 본 모습입니다.

    파이썬 실행 예시파이썬 실행 예시

python3 바로가기 바꾸기

  • python3python3.7을 가리키고 있는데, python3.5를 가리키도록 변경할 수 있을까요?

  • 가능합니다. 권장하지는 않지만 방법은 말씀드리겠습니다.

  • 파이썬 3.5나 3.7은 시스템에 설치된 시스템의 파이썬입니다. python3이 python3.7을 가리키고 있으면, 시스템의 기본 파이썬 버전이 3.7이라고 표현합니다.

  • 기본 파이썬 설정은 시스템의 설정이므로, 변경하려면 관리자 권한으로 실행해야 합니다. 그래서 설정하는 명령 앞에 sudo를 붙입니다.

  • 아래와 같이 변경할 수 있습니다.

# 기본 파이썬을 3.5로 바꾸기
$  sudo update-alternatives --set python3 /usr/bin/python3.5

# 기본 파이썬을 3.7로 바꾸기
$  sudo update-alternatives --set python3 /usr/bin/python3.7
  • 시스템의 기본 파이썬은 바꾸지 않는 것이 좋겠습니다. 다른 소프트웨어 설치시 문제가 발생할 수도 있습니다.

기본 파이썬을 변경하려면?

  • python3이 파이썬 3.7을 가리키고 있어서 3.5로 실행할 수 없다는 질문을 받은 적이 있습니다.
  • 해결 방법은 의외로 간단합니다. python3으로 실행하지 말고, python3.5로 실행하시면 됩니다.
  • sample.py 파이썬 파일을 우리가 만들었다고 가정하고 다음과 같이 실행할 수 있습니다.
# 기본 파이썬 버전인 python3.7로 실행
$  python3 sample.py

# 명시적으로 3.7로 실행
$  python3.7 sample.py

# 명시적으로 3.5로 실행
$  python3.5 sample.py

  • 원하는 파이썬 버전을 명시해주면 됩니다.
  • python3.7로 입력하는 것이 불편하다고 생각되시나요? 그렇지 않습니다.
  • 인터넷의 어떤 문서를 보고 python3 sample.py를 실행했다고 가정해보겠습니다.
    • 실제 실행되는 파이썬은 3.5일수도 있고, 시스템에 따라서 3.5, 3.6, 3.7, 3.8, 3.9 일 수도 있습니다.
    • 또는 다른 3.x 버전의 파이썬일 수도 있습니다.
    • 나열한 모든 파이썬에서 동작하면 다행인데, 그렇지 않다면 오히려 정보 부족으로 실행할 수 없습니다.
    • 하지만 문서에서 python3.7로 실행했다면, 적어도 python3.7에서는 동작하겠구나라고 생각할 수 있습니다.
    • 따라서 python3 보다 python3.7이 더 직관적입니다.

pip도 3.5와 3.7용으로 두개입니다.

  • 인터넷에 있는 라이브러리를 설치할 때 pip3 명령을 사용합니다.
  • python 3.5가 설치될때 pip 3.5가 함께 설치되고, python 3.7이 설치될 때 pip 3.7이 함께 설치됩니다.
  • pip3pip3.5pip3.7바로가기 입니다.
  • pip3도 python3과 마찬가지 규칙으로 설치되고, 사용할 수 있습니다.
  • pip3으로 실행하기 보다는 pip3.5 또는 pip3.7로 버전을 명시해서 실행하는 것이 좋습니다.

파이썬은 시스템 수준의 파이썬이지만 사용자용 pip3가 필요합니다.

  • 시스템 수준의 파이썬에 일반 사용자 권한으로 뭔가를 설치할 수 있을까요?
  • 불가능합니다. pip3/usr/lib/python3.5/usr/lib/python3.7같은 시스템 수준의 폴더에 뭔가를 설치하려면, 관리자 권한이 필요합니다.
  • 일반 사용자 계정으로 시스템 수준의 폴더에 설치할 수 없으므로, 일반 사용자가 pip3.x를 실행할 때는 자동으로 자신의 홈폴더에 라이브러리를 설치합니다.
  • pi 사용자가 pip3.7 install requests 명령을 실행하면
    • /usr/lib/python3.7에 설치되는 것이 아니고
    • /home/pi/.local/lib/python3.7에 설치됩니다. 즉 pi 사용자의 홈폴더 하위 경로에 설치되는 것입니다.
    • 파이썬 버전별로 각각 다른 폴더에 설치됩니다.
  • 정리해 보면 다음과 같습니다.
# pi 사용자로 아래 명령을 실행
$  pip3.7 install requests
# /home/pi/.local/lib/python3.7/site-packages 에 설치됩니다.

$  pip3.5 install requests
# /home/pi/.local/lib/python3.5/site-packages 에 설치됩니다.
  • 파이썬 버전별로 라이브러리들이 설치되는 것을 이해하셨을 것 같습니다.
  • 간혹 pip3.5로 설치한 것을, python3.7에서 임포트하는 실수를 할 수 있습니다. 또는 반대로 pip3.7로 설치하고, python3.5에서 임포트하는 실수를 하기도 합니다.
  • 이것이 안되는 이유는 파이썬 버전별로 라이브러리들이 관리되기 때문입니다.
  • 아래는 설치했는데, 임포트할 수 없는 상황을 보여줍니다.
$  pip3.5 install requests

$  python3.7
>> import requests
ModuleNotFoundError: No module named 'requests'
  • 이 부분만 주의한다면, 시스템에 여러 버전의 파이썬이 있어도 사용하는데 문제가 없을 것 같습니다.
  • 오히려 여러 버전의 파이썬이 있는 것이 더 편리하게 느껴지는 분도 있을 것 같습니다.

내가 맘대로 바꿔도 되는 그런 파이썬은 없을까?

  • 있습니다. 파이썬 가상환경(venv, Virtual Environment)을 이용하면 됩니다. 원하는 버전의 파이썬을, 설치하고, 삭제하는 것이 자유롭습니다. 가상환경은 사용자 공간에 설치되므로 관리자 권한이 필요없습니다.
  • 여러 버전의 파이썬을 이용할 수 있는, 가상환경의 단점은 디스크 공간을 많이 차지하는 것입니다. SD 카드 기반의 라즈베리파이는 이 단점을 극복할 수 없으므로 가상환경을 사용하지 않습니다.
  • 나중에 파이썬이 익숙해지면, SD 카드를 32GB 정도 되는 것으로 구매해서, 파이썬 가상환경을 도전해보는 것도 좋을 것 같습니다.

파이썬 에디터 - Thonny 파이썬

Thonny 실행하기

  • 코디니팩 라즈베리파이4에 포함된 Thonny를 실행해보겠습니다.

  • 메뉴에서 토니를 실행해주세요.

    Thonny 메뉴Thonny 메뉴
  • Thonny를 실행하면 대략 다음과 같은 모양으로 실행됩니다.

    • Thonny는 한글 메뉴를 지원합니다.
    • Thonny의 기본 파이썬 버전은 python3.7 입니다.
    Thonny 첫화면Thonny 첫화면

Thonny 설정화면

  • Thonny의 도구 메뉴에서 옵션을 선택해주세요. 그러면 Thonny의 설정 화면이 열립니다.

  • 에디터의 언어를 원하는 언어로 설정할 수 있습니다. 기본값은 한국어입니다

    Thonny의 에디터 언어 설정Thonny의 에디터 언어 설정
  • 설정 화면에서 인터프리터를 선택해주세요.

  • 인터프리터 탭에서 파이썬 버전을 선택할 수 있습니다. 기본값은 python 3.7입니다.

  • 최신 버전의 Thonny는 더 이상 python 3.5를 지원하지 않습니다. 만약 Thonny에서 python 3.5를 실행해야 한다면, 예전 버전의 Thonny를 설치해야 합니다.

    Thonny에서 파이썬 버전 설정Thonny에서 파이썬 버전 설정

코디니팩에서 아래 파이썬 예제를 실행해보세요.

End.