[Python] PyQt - 실행 파일(.exe) 제작

Profile-exe·2021년 7월 4일
2

Python GUI

목록 보기
1/1
post-thumbnail

PyQt를 이용하여 Python으로 GUI 프로그램 제작이 가능하다.
QtDesigner, Pycharm 개발 툴을 사용하여 간단한 프로젝트를 하고 있었는데, 실행 파일(.exe) 제작 시 UI 파일의 의존성으로 인해 실행이 안되는 경우가 발생했다.
이번 포스트에서는 해당 문제가 발생하지 않고 실행파일을 만들 수 있는 방법을 소개하겠다.


1. Pyinstaller 설치

pip를 이용하여 터미널에서 Pyinstaller를 설치한다.

pip insatall pyinstaller

2. .spec 파일 생성 및 수정

바로 .exe 파일을 생성할 수 있으나, ui 파일 의존성 때문에 실행이 되지 않는 경우가 발생한다. 따라서, .spec 파일을 생성한 후 수정하여 .exe 파일을 생성해야 의존성 문제를 해결할 수 있다.

pyinstaller는 여러 명령어 옵션이 존재한다.

옵션내용
--onefile 또는 -F단일 exe 파일 생성
--noconsole 또는 -w콘솔창 없이 실행
-n (실행 파일 이름.exe)실행 파일 이름 지정

이를 이용하여 .spec 파일을 생성한다.

pyi-makespec --onefile --noconsole -n (실행파일 이름).exe (파일 이름).py


생성된 .spec파일의 a리스트의 datas.ui파일 경로를 넣어주어야 한다. add_files 리스트를 만들어서 datas에 대입하는 방식이다. 아이콘 이미지 .ico파일의 경로도 넣어주었다.

나중에 다른 파일들을 추가 및 삭제하더라도 add_files 리스트만 수정하면 되므로 편리하다. 요소 타입튜플임을 주의하자

exe 부분에 icon을 추가하여 아이콘 이미지도 설정해 주었다.

block_cipher = None
# datas에 넣을 파일들의 리스트
add_files = [ ('src\\RFB.ui', '.'), ('img\\icon.ico', '.') ]

a = Analysis(['src\\printUI.py'],
             pathex=['D:\\Github\\RenameFile-for-BOJ'],
             binaries=[],
             datas=add_files,

...

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          # 아이콘 설정
          icon='D:\\Github\\RenameFile-for-BOJ\\img\\icon.ico',             
...             

3. .exe 파일 생성

수정된 .spec파일을 이용하여 실행 파일을 만든다.

pyinstaller (spec파일 이름).spec

생성된 실행 파일은 /dist 디렉토리에 저장되어 있다.


정리

  • 어떠한 형식의 파일이던 의존성 문제를 해결하기 위해서는 .spec 파일에서 datas에 추가해주면 된다.
  • 리스트를 만들어 datas에 대입하게 작성하면 추가 및 삭제가 용이하다.
  • pyinstaller에서 제공되는 옵션을 이용한 명령어들은 .spec에서 모두 수정이 가능하다. 즉, 우선 .spec 파일을 생성하고 세부 옵션들을 .spec 파일에서 수정해도 된다.

참고

CF::LF님 블로그
taedi님 블로그

profile
컴퓨터공학과 학부생

0개의 댓글