파이썬 프로젝트를 진행한 후 실행 파일로 배포하고 싶을 때, PyInstaller라는 도구를 사용하면 간편하게 실행 파일을 만들 수 있습니다. 이 글에서는 PyInstaller를 사용해 .exe 파일을 만드는 방법과 발생할 수 있는 오류 및 해결 방법을 설명합니다.
PyInstaller 사용법
PyInstaller를 이용해 파이썬 코드를 실행 파일로 만드는 명령어는 매우 간단합니다. 다음과 같이 작성합니다:
pyinstaller --onefile --icon=icon.png main.py
옵션 설명
- --onefile: 모든 파일을 하나의 실행 파일로 병합합니다.
- --icon=icon.png: 아이콘 파일을 지정해 실행 파일의 아이콘을 설정합니다
문제 발생: 아이콘 파일 오류
위 명령어를 실행했을 때, 다음과 같은 에러가 발생할 수 있습니다:
ValueError: Received icon image 'icon.png' which exists but is not in the correct format. On this platform, only ('exe', 'ico') images may be used as icons. If Pillow is installed, automatic conversion will be attempted. Please install Pillow or convert your 'png' file to one of ('exe', 'ico') and try again.
원인 분석
에러의 원인은 PyInstaller가 아이콘 파일로 PNG 형식을 지원하지 않기 때문입니다. Windows에서는 ICO 형식만 허용됩니다.
해결 방법
1. PNG 파일을 ICO 형식으로 변환
가장 확실한 방법은 icon.png 파일을 icon.ico로 변환하는 것입니다. 온라인 변환기나 그래픽 소프트웨어(예: Photoshop, GIMP)를 이용해 쉽게 변환할 수 있습니다. 그런 후 명령어에서 icon.ico를 사용합니다.
pyinstaller --onefile --icon=icon.ico main.py
2. Pillow 라이브러리 설치
PyInstaller가 PNG 파일을 자동으로 변환할 수 있도록 Pillow 라이브러리를 설치할 수도 있습니다.
pip install pillow
Pillow 설치 후 다시 명령어를 실행하면 PyInstaller가 PNG 파일을 ICO 형식으로 변환해 문제를 해결할 수 있습니다.
마무리
이렇게 하면 실행 파일이 정상적으로 만들어지고 배포할 준비가 완료됩니다. PyInstaller는 간단한 파이썬 프로젝트를 실행 파일로 변환하는 데 매우 유용한 도구입니다.
추가 팁: PyInstaller의 유용한 옵션들
- --noconsole: GUI 프로그램에서 콘솔 창을 숨깁니다.
pyinstaller --onefile --noconsole main.py
- --add-data: 추가 파일(데이터 파일 등)을 포함할 때 사용합니다.
pyinstaller --onefile --add-data "config.yaml;." main.py
- --clean: 빌드할 때 생성된 임시 파일을 제거합니다.
pyinstaller --onefile --clean main.py
- 모든 옵션을 함께 사용하는 예시
pyinstaller --onefile --noconsole --add-data "config.yaml;." --clean main.py
결론
PyInstaller를 사용할 때 아이콘 파일 문제와 같은 에러를 마주칠 수 있지만, 위 방법들을 통해 쉽게 해결할 수 있습니다.
'개발 > 개발 필기' 카테고리의 다른 글
Git 브랜치 충돌 해결: Main에 Develop 강제로 덮어씌우는 방법 (2) | 2024.11.15 |
---|---|
네이버 API 검색 결과에서 언론사 이름 추출하기 (19) | 2024.11.06 |
우분투에서 Node.js와 PM2를 사용한 무중단 애플리케이션 실행 방법 (2) | 2024.10.14 |
Sentry 서버 재시작 방법 (Docker 환경) (0) | 2024.10.08 |
DB 응답 속도가 느린 경우 개선 방법? index 사용 (15) | 2024.09.26 |