def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
return os.path.join(base_path, relative_path)
form = resource_path('_UI_FILENAME_')
form_class = uic.loadUiType(form)[0]
_UI_FILENAME_에 사용할 .ui 파일 이름 넣어주어야 한다.
pyinstaller 사용해서 소스파일 빌드
이후 생성된 .spec 파일의 datas 부분을 수정
a = Analysis(['cal_gui.py'],
...
datas=[ ('_UI_FILENAME_', '.') ],
...)
.spec 파일로 재빌드
ex) pyinstaller _SOURCE_NAME_.spec
주의! 소스파일을 그대로 다시 빌드하면 .spec 파일은 기본으로 변경되고 수정한 사항이 반영이 안됨.
dist 디렉토리에서 결과물 확인
단일 실행파일로 빌드하는 옵션 때문인지 실행속도가 조금 느린 점을 빼면 문제없이 작동함.
추가적으로 pyinstaller 사용해서 빌드할 때 사용한 옵션
- --noconsole, -w : 실행시에 콘솔창이 안뜨게하는 옵션인데 왜인지 모르겠는데 내 경우에는 적용이 안되서 .spec 파일에서 EXE 파트에서 console 부분을 False로 직접 변경해주었더니 콘솔창이 안떴음
- -onefile, -f : 단일 실행파일로 빌드하는 옵션인데 이건 문제없이 잘 작동했음
윈도우 환경에선 문제없이 잘 작동하는 걸 확인했는데 다른 OS에서는 어떤 방법을 사용해야하는지 알아볼 필요가 있어보인다.
'프로그래밍 > Python' 카테고리의 다른 글
Python - range와 scope (0) | 2020.07.22 |
---|---|
Python - Decorator (0) | 2020.07.22 |
Django 기본 (0) | 2020.07.07 |
Python - isdeciaml, 사용자 정의 함수, None (0) | 2020.06.22 |
Python - 반복문, 출력문, 입력문, 조건문, 형변환 간단 정리 (1) | 2020.06.19 |