[python] cx_Freeze를 사용하여 실행 파일에 커스텀 리소스 추가하기

cx_Freeze 소개

cx_Freeze는 파이썬 코드를 실행 가능한 바이너리(executable) 파일로 변환해주는 라이브러리입니다. 이를 통해 파이썬 프로그램을 다른 사람에게 배포할 때 환경 설정 및 종속성 문제 없이 쉽게 실행 파일로 제공할 수 있습니다.

cx_Freeze를 사용하여 실행 파일 생성하기

cx_Freeze를 사용하여 파이썬 프로그램을 실행 파일로 변환하는 과정은 간단합니다. 우선 cx_Freeze를 설치해야 합니다. 터미널에서 다음 명령을 실행하여 cx_Freeze를 설치합니다.

pip install cx_Freeze

cx_Freeze가 설치되었다면 이제 실행 파일을 생성할 준비가 되었습니다. setup.py라는 파일을 생성하고 다음과 같이 작성합니다.

from cx_Freeze import setup, Executable

setup(
    name="MyProgram",
    version="1.0",
    description="My Python Program",
    executables=[Executable("my_program.py")],
)

위 코드에서 nameversion, description은 해당 프로그램의 정보를 나타내는 것입니다. 그리고 executables에는 변환하고자 하는 파이썬 파일을 지정합니다.

이제 터미널에서 다음 명령을 실행하여 실행 파일을 생성합니다.

python setup.py build

위 명령을 실행하면 build라는 폴더가 생성되고 그 안에 실행 파일이 생성됩니다.

커스텀 리소스 추가하기

cx_Freeze를 사용하여 실행 파일로 변환 시, 실행 파일에 커스텀 리소스를 추가할 수 있습니다. 이를 통해 실행 파일만으로 자원 파일을 포함할 수 있어 편리합니다. 커스텀 리소스로는 이미지, 사운드 파일 등 다양한 형식의 파일을 포함할 수 있습니다.

커스텀 리소스를 추가하려면 리소스 파일을 setup.py 파일과 동일한 디렉토리에 위치시키고, setup() 함수의 options 파라미터에 build_exe를 설정해야 합니다. 다음과 같이 작성합니다.

from cx_Freeze import setup, Executable

# 리소스 파일 경로
resource_files = ["images/"]

# 커스텀 리소스 추가
options = {
    'build_exe': {
        'packages': [],
        'include_files': resource_files
    }
}

setup(
    name="MyProgram",
    version="1.0",
    description="My Python Program",
    executables=[Executable("my_program.py")],
    options=options
)

위 코드에서 resource_files는 포함시킬 리소스 파일의 경로를 리스트로 나타냅니다. 위 예제에서는 images 디렉토리에 있는 모든 파일을 포함시킵니다.

추가 리소스 사용하기

커스텀 리소스를 실행 파일 내에서 사용하기 위해서는 파일의 경로를 알아야 합니다. sys._MEIPASS 변수를 이용하여 실행 파일이 위치한 경로를 얻을 수 있습니다.

import sys
import os

# 이미지 파일 경로
image_path = os.path.join(sys._MEIPASS, 'images', 'my_image.png')

위 코드에서 sys._MEIPASS 변수는 실행 파일이 위치한 경로를 나타냅니다. os.path.join() 함수를 사용하여 리소스 파일의 경로를 얻을 수 있습니다.

결론

cx_Freeze를 사용하여 파이썬 프로그램을 실행 파일로 변환하고, 커스텀 리소스를 추가하여 실행 파일 안에 자원 파일을 포함시킬 수 있습니다. 이를 통해 환경 설정 및 종속성 문제를 해결하고, 다른 사람에게 쉽게 배포할 수 있습니다.