PyInstaller는 Python 애플리케이션을 단일 실행 파일로 패키징할 수 있는 도구입니다. 이때 애플리케이션에 사용되는 UI 파일(.ui
)도 함께 포함시켜야 합니다. PyInstaller는 기본적으로 Python 스크립트와 직접 import된 모듈만 포함시키기 때문에, 동적으로 로드되는 UI 파일은 별도로 지정해 주어야 합니다.
UI 파일을 exe 파일에 포함시키는 방법은 다음과 같습니다:
1. PyInstaller 명령어 사용
pyinstaller --add-data "coupang.ui:." --onefile your_script.py
이 명령어에서:
--add-data "coupang.ui:."
: UI 파일을 exe 파일의 루트 디렉토리에 포함시킵니다.--onefile
: 단일 실행 파일을 생성합니다.
2. 코드에서 리소스 파일 경로 처리
exe 파일 실행 시 올바른 경로에서 UI 파일을 찾을 수 있도록 코드를 수정해야 합니다.
import sys
import os
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
# UI 파일 로드 시
ui_file = resource_path('coupang.ui')
uic.loadUi(ui_file, self)
이 resource_path
함수는 개발 환경과 PyInstaller로 생성된 exe 환경 모두에서 작동합니다.
3. spec 파일 사용 (선택적)
더 복잡한 설정이 필요한 경우, spec 파일을 사용할 수 있습니다.
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(['your_script.py'],
pathex=[],
binaries=[],
datas=[('coupang.ui', '.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=None,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data, cipher=None)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='your_app',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False)
이 spec 파일을 사용하려면:
pyinstaller your_script.spec
주의사항:
- UI 파일 외에도 이미지, 설정 파일 등 다른 리소스 파일들도 같은 방식으로 포함시킬 수 있습니다.
- 큰 프로젝트의 경우, 모든 필요한 리소스를 포함시키는 것을 잊지 않도록 주의해야 합니다.
- exe 파일 크기가 커질 수 있으므로, 필요한 파일만 포함시키는 것이 좋습니다.
이러한 방법을 사용하면 UI 파일을 포함한 완전한 실행 파일을 생성할 수 있습니다. 실행 파일을 다른 컴퓨터에서 테스트하여 모든 것이 제대로 작동하는지 확인하는 것이 좋습니다.
'파이썬 > PyQT' 카테고리의 다른 글
Qtpy - QLineEdit 활용하기 (0) | 2022.03.23 |
---|---|
Qtpy - QProgressBar 활용하기 (0) | 2022.03.23 |