- 전체
- Python 일반
- Python 수학
- Python 그래픽
- Python 자료구조
- Python 인공지능
- Python 인터넷
- Python SAGE
- wxPython
- TkInter
- iPython
- wxPython
- pyQT
- Jython
- django
- flask
- blender python scripting
- python for minecraft
- Python 데이터 분석
- Python RPA
- cython
- PyCharm
- pySide
- kivy (python)
Python 일반 [python 일반] [Python] pyinstaller] PyInstaller -i, --add-data로 아이콘(icon)을 포함하자
2024.07.19 00:48
[python 일반] [Python] pyinstaller] PyInstaller -i, --add-data로 아이콘(icon)을 포함하자
소스와 아이콘이 같은 폴더에 있을 때,
tkinter를 이용한 코드입니다.
import os
if os.path.isfile('foo.ico'):
self.root.iconbitmap('foo.ico')

코드를 실행하면,
정상적으로 아이콘을 볼 수 있지만
파이 인스톨러로 만든 실행파일을 실행하면,
아이콘 대신 나뭇잎만 보입니다. :<

onefile 옵션을 사용하지 않았을 때는
ico 파일을 새로 만들어진 폴더에 따로 복사하면
아이콘을 볼 수 있습니다.
하지만, --onefile 옵션을 사용할 때는,
(따로 복사할 수 없기 때문에)
실행 파일에 아이콘 파일을 포함해야 합니다.
'--onefile'은,
실행에 필요한 파일과 폴더를 모아
하나의 '자동 실행 압축 파일'을
만드는 옵션입니다.
이 자동 실행 압축 파일을 실행하면
임시 폴더에 압축을 푼 뒤
폴더 내 실행파일을 실행합니다.
이 임시 폴더의 위치가
고정되어 있지 않기 때문에
아이콘 파일을 복사하기 힘듭니다.
빌드 시 --add-data 옵션을 이용하여
"<포함할_파일;저장될_위치>"를 설정해 두면
실행 파일에 아이콘 파일을 포함할 수 있습니다.
Mac OS에서는 ";" 대신 ":"을 사용해야 합니다.
--add-data는 여러 번 사용할 수 있습니다.
자세한 것은 원문 링크를 참고하세요.
https://pyinstaller.org/en/stable/usage.html#cmdoption-add-data
.\venv\Scripts\pyinstaller --onefile -w -i=foo.ico --add-data="foo.ico;." foo.py
소스 파일과 같은 위치에
아이콘 파일이 있는 상황이라
'.'으로 설정했습니다.
-i 옵션의 아이콘은
탐색기에서 보이는
exe 파일의 아이콘입니다.
gui 좌측 상단의 아이콘이 아닙니다.
압축 해제된 폴더에서
실행파일이 실행되기 때문에
아이콘 파일의 위치를
정확하게 찾을 수 있도록
소스코드도 수정합니다.
import os
path = os.path.join(os.path.dirname(__file__), 'foo.ico')
if os.path.isfile(path):
self.root.iconbitmap(path)
'__file__'은 현재 실행중인 파이썬 파일의 전체 경로를 의미합니다.
os.path.dirname()는 전체 경로 중 파일명을 제거합니다.
os.path.join()은 경로와 문자열(파일명)을 결합합니다.
from os import path
print(__file__) # C:\PyProjects\test\test.py
print(path.dirname(__file__)) # C:\PyProjects\test
print(path.join(path.dirname(__file__), 'foo.ico')) # C:\PyProjects\test\foo.ico
PS) 요즘 nuitka도 핫하다는데....
https://nuitka.net/
[출처] https://comdoc.tistory.com/entry/PyInstaller-%EC%95%84%EC%9D%B4%EC%BD%98%EC%9D%84-%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 8 |
[python, 그래픽] [파이썬 활용] 마우스 자동화 (pyautogui)
| 졸리운_곰 | 2022.11.26 | 437 |
| 7 |
[python, 그래픽] 파이썬 자동화 툴 - pyautogui 사용하기
| 졸리운_곰 | 2022.11.26 | 568 |
| 6 |
[python][image processing][파이썬][이미지프로세싱] 파이썬 영상 처리 (OpenCV)
| 졸리운_곰 | 2021.11.12 | 629 |
| 5 |
[Python, GUI tool] GUI drag & drop style GUI Builder for Python Tkinter
| 졸리운_곰 | 2021.05.17 | 613 |
| 4 |
[python 파이썬 2d 그래픽스] The Interesting Python Graphics Libraries for Python Programmers
| 졸리운_곰 | 2021.04.27 | 1227 |
| 3 | 파이선 텍스트 게임 샘플 Code for my First Text-Based Game | 졸리운_곰 | 2018.09.01 | 745 |
| 2 |
python Collada dae file Reading : 파이썬으로 콜라다 dae 파일 분석
| 졸리운_곰 | 2017.08.01 | 1064 |
| 1 |
matplotlib으로 하트 그리기
| 졸리운_곰 | 2017.03.04 | 2278 |

