https://pyinstaller.org/en/stable/index.html
PyInstaller는 파이썬 프로그램을 exe 실행파일로 만들어 줍니다.
파이썬으로 GUI 프로그램을 만들었으면 exe 파일로 만들어 배포를 해야 하는데, 그 역할을 해 줍니다.
우선 사용을 위해서는 PyInstaller를 설치해 주어야 합니다.
pip install -U pyinstaller
터미널에 위 명령어를 입력해서 설치해 주세요
설치가 다 되었으면 exe로 빌드를 해야겠죠. 사용방법은 매우 간단합니다
pyinstaller 파일명.py
위 명령어만 입력하면 빌드가 완료됩니다.
하지만 대부분 이름과 아이콘을 세팅하고 이미지나 파일 폴더 등을 exe파일 안에 넣어 하나로 빌드할 것입니다.
그렇다면 아래 방법을 따라오세요.
def resource_path(relpath):
try:
abspath = sys._MEIPASS
except Exception:
abspath = os.path.abspath(".")
return os.path.join(abspath, relpath)
파일 최상단 import 아래에 위 코드를 추가해 주세요.
상대경로로 되어 있는 파일 내의 경로를 프로그램이 실행될때 생성되는 PyInstaller 임시폴더의 절대경로로 지정해 줍니다
기존 :'img/icon.ico'
변경 : resource_path('img/icon.ico')
그리고 파일 내의 모든 이미지/아이콘/파일 경로 앞에 resource_path() 를 붙여주세요
pyinstaller -w -F -n 프로그램명 --icon="img/icon.ico" --add-data="img/*;img" --add-data="conf.ini;./" 파이썬파일명.py
그럼 이제 소스 내의 설정이 완료되었으니 빌드를 해보겠습니다. 코드는 위 내용을 복사하신 뒤 알맞게 고쳐서 사용하세요
exe파일만 만들어지며 콘솔창은 실행되지 않고 아이콘 설정, 이미지 폴더, 파일 추가하였습니다.
되게 붙어있는 옵션이 많죠? 이 옵션에 대해 하나하나 설명하겠습니다.
-w : exe 파일 실행 시 파이썬 콘솔창이 보이지 않게 해 줍니다
-f : exe 단일 파일만 만들어지게 합니다
-n : 프로그램의 이름을 지정합니다. 지정하지 않으면 파이썬파일명.exe로 생성됩니다.
--icon : 프로그램의 아이콘을 지정합니다
--add-data : 이미지, 폴더, 파일을 추가해 줍니다. 소스 내에 있던 것들을 이곳에 추가해 주시면 됩니다.
사용 방법은 추가대상;위치 입니다.
예를 들어, img폴더를 추가하고 싶으면 --add-data:"폴더명/*;폴더위치" 으로 추가하시면 되고
파일을 추가할 경우에는 --add-data:"파일명;파일위치" 로 추가하시면 됩니다. ui파일을 사용하는 경우에도 동일하게 추가하시면 됩니다. --add-data:"ui파일명;파일위치"
폴더 위치는 상대경로이며 --add-data는 원하는 만큼 추가가 가능합니다.
원하는 대로 설정을 완료하셨다면, 터미널에서 바로 명령문을 실행해도 됩니다
이렇게요. 하지만 bat파일에 명령어를 저장한 후 bat파일을 실행하면 훨씬 편리합니다.
pyinstaller -w -F -n 프로그램명^
--icon="추가할아이콘"^
--add-data="추가할폴더명/*;폴더위치"^
--add-data="추가할파일명;파일위치/"^
파이썬파일명.py
이걸 .bat파일에 저장한 다음 실행하면
터미널 명령어를 불편하게 고치지 않고 훨씬 편리하게 exe파일을 생성할 수 있습니다.
Building EXE from EXE-00.toc completed successfully 메시지가 출력되면 빌드가 잘 되었는지 확인해 봐야겠죠?
설정한 아이콘과 이름으로 잘 생성되었습니다.
'개발 > PyQt&Python' 카테고리의 다른 글
파이썬 zipfile 모듈(python 압축파일 다루는 방법) (0) | 2022.11.24 |
---|---|
PyQt tablewidget에 checkbox 추가 / 정렬되게 만들기 (0) | 2022.11.11 |
파이썬 디렉터리/파일 관련 함수 정리(os/os.path/glob,shutil) (0) | 2022.11.09 |
PyQt 하이퍼링크(QLabel, QPushButton) 달기, 스타일 변경 (0) | 2022.11.09 |
PyQt pdf파일 drag/drop으로 가져오기 (0) | 2022.11.08 |
댓글