[python] cx_Freeze를 사용하여 작성한 실행 파일의 멀티미디어 처리 방법

소개

cx_Freeze는 Python 스크립트를 실행 파일로 변환해주는 유용한 도구입니다. 하지만, 실행 파일로 변환된 프로그램에서 멀티미디어 파일을 제대로 처리하기 위해서는 몇 가지 추가 작업이 필요합니다. 이 블로그 포스트에서는 cx_Freeze를 사용하여 작성된 실행 파일에서 멀티미디어 파일을 처리하는 방법에 대해 소개하겠습니다.

1. 멀티미디어 파일 포함하기

cx_Freeze로 빌드한 실행 파일은 기본적으로 스크립트와 같은 디렉토리에 존재하는 멀티미디어 파일을 인식하지 못합니다. 따라서, 멀티미디어 파일을 실행 파일과 함께 빌드하는 것이 필요합니다.

먼저, 멀티미디어 파일을 실행 파일과 동일한 폴더에 복사해야 합니다. 이를 위해서는 빌드 스크립트에 다음 코드를 추가해야 합니다:

from cx_Freeze import setup, Executable
import shutil

# executable 설정 등 필요한 코드 작성

# 멀티미디어 파일을 실행 파일과 동일한 폴더에 복사
shutil.copytree("path/to/multimedia/files", "path/to/build/folder/multimedia/files")

위 코드에서 path/to/multimedia/filespath/to/build/folder/multimedia/files는 각각 멀티미디어 파일이 위치한 디렉토리와 실행 파일이 빌드되는 폴더를 나타냅니다. 이를 알맞게 수정하여 사용하시기 바랍니다.

2. 멀티미디어 파일을 참조하기

실행 파일과 함께 멀티미디어 파일이 복사되었으므로, 실행 파일에서 이를 참조할 수 있도록 코드를 수정해야 합니다.

예를 들어, 실행 파일에서 이미지 파일을 사용하는 경우 다음과 같은 코드를 사용할 수 있습니다:

import os
import sys

# 실행 파일이 위치한 경로 찾기
if getattr(sys, 'frozen', False):  # 실행 파일인 경우
    base_path = sys._MEIPASS
else:  # 스크립트인 경우
    base_path = os.path.abspath("")

# 이미지 파일의 경로
image_path = os.path.join(base_path, "multimedia/files", "image.jpg")

# 이미지 파일 사용 예시
image = pygame.image.load(image_path)

위 코드에서 multimedia/files는 멀티미디어 파일이 복사된 폴더를 나타냅니다. 앞서 언급한대로, 실행 파일과 멀티미디어 파일은 동일한 폴더에 위치하게 됩니다.

참고 자료