Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Tkinter 애플리케이션을 종속성까지 포함해 실행 파일로 번들하는 방법

Tkinter로 데스크톱 애플리케이션을 개발한 뒤에는, Python이 설치되지 않은 환경에서도 실행할 수 있도록 단독 실행 파일 형태로 패키징(번들링)하는 것이 좋습니다. 이렇게 하면 애플리케이션을 휴대 가능한(portable) 형태로 배포할 수 있습니다. 다행히 Python 생태계에는 애플리케이션 코드와 필요한 모든 종속성을 하나의 실행 가능한 설치 파일로 압축·변환해 주는 다양한 패키지가 존재합니다.

운영체제별 추천 번들링 도구

  • Windowspy2exe
  • LinuxFreeze
  • macOSpy2app

각 도구는 해당 운영체제에 맞는 실행 파일을 생성하며, 인터프리터와 사용된 라이브러리까지 함께 묶어 주기 때문에 별도의 Python 환경 없이 프로그램을 실행할 수 있습니다.

예제: Windows용 실행 파일 만들기

이번 예제에서는 화면에 "Hello World"를 출력하는 간단한 Windows 기반 Tkinter 애플리케이션을 py2exe로 번들해 보겠습니다.

먼저 메인 애플리케이션 파일(main_app.py)이 있는 동일한 디렉터리에 setup.py 파일을 생성합니다. 그다음 setup.py에서 메인 애플리케이션 파일명을 매개변수로 전달하여 빌드 설정을 구성합니다.

1. setup.py 작성

from distutils.core import setup
import py2exe

setup(console=['main_app.py'])

2. 빌드 명령 실행

명령 프롬프트(cmd)에서 아래 명령을 실행합니다.

python setup.py py2exe

빌드가 완료되면 동일한 디렉터리 안에 dist 폴더가 생성되며, 그 안에 main_app.exe라는 이름의 실행 파일이 포함되어 있습니다. 이 폴더에는 프로그램 실행에 필요한 모든 종속성(DLL, 라이브러리 등)도 함께 들어 있으므로, dist 폴더 전체를 배포하면 됩니다.

3. main_app.py 소스 코드

# tkinter 라이브러리 임포트
from tkinter import *

# tkinter 프레임 인스턴스 생성
win = Tk()

# 창 크기 설정
win.geometry("600x400")

def present():
    Label(win, text="Hello World", font=('Times New Roman bold', 30)).pack(pady=10)

Button(win, text="Click Me", command=present).pack(pady=20)
win.mainloop()

실행 결과

생성된 main_app.exe 파일을 실행하면 아래와 같이 버튼과 레이블이 배치된 창이 열립니다. "Click Me" 버튼을 클릭하면 "Hello World" 텍스트가 화면에 나타납니다.

Python Tkinter 애플리케이션을 종속성까지 포함해 실행 파일로 번들하는 방법

마무리

이처럼 py2exe를 활용하면 몇 줄의 설정만으로 Tkinter 애플리케이션을 종속성까지 포함한 단독 실행 파일로 손쉽게 변환할 수 있습니다. macOS 사용자라면 py2app, Linux 사용자라면 Freeze 또는 PyInstaller를 활용해 같은 방식으로 배포용 패키지를 만들 수 있습니다.