Overview
안녕하세요. 오늘은 Python에서 제공하는 모듈의 하나인 Kivy를 가지고 모바일 앱을 만들어보도록 할거에요. Kivy로 만든 앱은 데스크탑 컴퓨터, macOS, Linux, BSD Unix, Windows등에서 실행하실수 있구요. iOS운영체제인 iPad나 iPhone에서도 실행가능하고 물론 Android운영체제를 가진 태블릿이나 핸드폰에서도 실행이 가능합니다. 그 밖에 TUIO(Tangible User Interface Objects)를 지원하는 모든 터치베이스 장비에서도 실행이 가능합니다.
Setup terminal and pip
현재버젼인 Kivy 2.3.0은 파이썬 3.7부터 3.12까지 지원합니다. 일단 파이썬 모듈을 관리하는 pip을 최신버젼으로 업그레이드할게요. 동시에 setuptools과 virtualenv도 같이 업그레이드 할거에요.
python -m pip install --upgrade pip setuptools virtualenv
Create virtual environment
Kivy개발을 위해서 파이썬에 가상환경을 하나 만들게요. 가상환경을 만드는 이유는요 각 파이썬 모듈들의 버젼이 충돌하지 않게 하기위함인데요. 예를 들면, Kivy가 지원하는 어떤 파이썬 모듈의 버젼이 낮은데 Kivy가 게을러서 위에 버젼을 지원하도록 업그레이드를 안한 상태에서 다른 프로젝트에서 사용되는 어떤 모듈이 Kivy가 사용하는 모듈을 사용하는데 공교롭게도 최신버젼만 지원한다고 하면 Kivy를 돌릴때는 그 모듈을 downgrade했다가 다른 프로젝트 돌릴때는 그걸 또 upgrade했다가 할수 없잖아요. 그래서 Docker같은 가상환경을 만들고 그 환경에서 Kivy프로젝트를 돌리면 다른 환경에서 같은 모듈의 다른 버젼을 설치해서 각 프로젝트별로 모듈의 버젼이 충돌하는 상황을 피할수가 있거든요.
자 그럼 Kivy를 돌리는데 전용으로 사용할 가상환경을 한번 만들어 볼게요. 가상환경의 이름은 kivy_venv라고 할게요.
python -m venv kivy_venv
생성을 했으면 kivy_venv를 활성화 시킵니다. 아래 명령어는 MacOS 기준입니다. 다른 OS는 여기를 참조해주세요.
source kivy_venv/bin/activate
위의 명령어를 실행하면 프롬프트 앞에 (kivy_venv)라는 라벨이 추가됩니다. 현재 kivy_venv라는 가상환경안에서 개발하고 있다는 걸 의미합니다.
참고로 가상환경에서 빠져나오고 싶다면
deactivate명령어를 실행하면 됩니다.
Install Kivy
kivy_venv가상환경 하에서 Kivy를 설치하도록 합니다. Kivy를 설치하는 가장 손쉬운 방법은 Kivy에서 제공하는 PyPi wheels를 통해서 Kivy와 예제들을 설치하는 방법입니다.
python -m pip install "kivy[base]" kivy_examples
위의 명령어로 Kivy를 설치하면 가장 미니멀한 Kivy가 설치가 되는데요, 혹시 앱에서 audio나 video를 지원하고 싶으시다면 kivy[base,media]나 kivy[full]로 설치를 해주시면 더욱 다양한 모듈을 사용하실수 있으세요.
python -m pip install "kivy[base,media]" kivy_examples
그밖에 다양한 설치방법이 있는데 소스를 직접 설치하거나, Kivy사이트에서 직접 다운로드 하는 방법이 있습니다.
Development install
Kivy패키지를 수정하고 싶거나 새로운 기능을 제안하고 싶다면 GitHub에서 소스를 다운받아 Pull Request를 요청해주세요.
git clone https://github.com/kivy/kivy.git
그리고 해당 폴더에 들어가서 수정가능한 형태로 변경해주세요
cd kivy
python -m pip install -e ".[dev,full]"
이제 코드를 변경하고 PR요청을 하실수 있으세요. 다만 변경후 로컬에서 테스트 하실때는 아래 명령어를 통해 Kivy패키지를 재컴파일 해주셔한다는거 잊지 마세요.
python setup.py build_ext --inplace
아니면 bash를 사용하시거나 Linux환경이시라면 간단하게 make만 해주셔도 됩니다.
컴파일을 마친상태에서 반드시 pytest를 돌려주세요. 그래야 코드에 문제가 없는지 검증이 되니까요.
pytest kivy/tests
bash나 Linux환경이라면 make test로 대신할수 있습니다. 다른 환경에서 개발하고 계신분은 여기를 참고해주세요.
Checking the demo
이제 Kivy설치가 다 되었습니다. 이제 여러분의 파이썬 코드에서 import kivy를 사용하실수 있습니다. 그보다 간편하게 기존에 함께 다운로드된 데모프로그램을 한번 돌려볼까요? MacOS라면 아래 명령어를 실행하시면 되고 다른 분들은 여기에서 명령어를 찾으실수 있습니다. 아래 명령을 실행하기 전에 git으로 clone한 kivy폴더에 들어와 있는지 확인해주세요
python examples/demo/showcase/main.py
앗! 그런데 제가 데모를 돌려봤는데
pygame이 없어서 에러나네요.
아까 kivy설치할때kivy[full]로 했었어야했나봐요.
암튼 저는pygame만 따로 설치를 해주었더니 잘돌아갑니다.
python -m pip install pygame
python examples/demo/showcase/main.py

살짝 괴상하긴 하지만 데모앱이 실행이 잘 되었네요.
Hello World
그래도 명색이 첫 강의인데 Hello World는 만들어야겠죠. main.py파일 하나 생성해서 아래의 코드를 입력해주세요.
from kivy.app import App
from kivy.uix.label import Label
class MyApp(App):
def build(self):
return Label(text='Hello World')
if __name__ == '__main__':
MyApp().run()

터미널에서 python main.py으로 실행해주면 다음과 같이 까만화면에 하얀글씨로 Hello World가 쓰여진 모바앱이 만들어집니다.