본문 바로가기
프로젝트/SRT&KTX 매진표 예매

SRT&KTX 기차표 매크로 예매 - (7) 실행파일 만들기 (PyInstaller)

by 매크로메이커 2024. 1. 12.

파이썬으로 만든 프로그램은 .py 파일을 실행해야 하고, 유저들은 PC에 파이썬이 깔려있어야만 실행할 수 있다(라이브러리도 다 깔려있어야하는건 덤...)

 

일반 유저들은 파이썬이 뭔지도 모를뿐더러, 파이썬을 깔라고 하더라도 실행에 많은 어려움을 겪는다.

 

그래서 배포할때는 프로그램을 실행파일로 배포해야만 한다.

 

지금까지 만든 프로그램을 실행파일로 만들어 배포해보자..!


파이썬으로 만든 프로그램을 배포하기 위해서 PyInstaller를 사용한다. 

 

PyInstaller로 Windows, macOS(OS X), GNU/Linux 등 다양한 플랫폼에서 실행파일을 생성할 수 있다.

 

pip install pyinstaller

 pyInstaller 설치는 pip로 진행

 

pyinstaller에서 주로 사용하는 명령어는 아래와 같다.

1. -F, --onefile : 한개의 실행파일로 변환

2. -n NAME, --name NAME : 변환될 이름 지정

3. -w, --noconsole, --windowed : 콘솔 윈도우 표시 안함

4. -i FILE, --icon FILE : 아이콘 설정

5. --add-data : 파일 추가

 

아이콘 만들기

기본 아이콘은 못생겼으니, 아이콘을 만들어보자. 지원하는 확장자는 .ico, ,icns 정도가 있는 것 같다. 

https://convertio.co/kr/png-ico/

CANVA로 이미지를 만들고, 위 사이트에서 ico로 파일을 변환해준다.

요로코롬 귀여운 로고가 만들어졌다

 

Mac OS(OS X)

MAC에서 실행파일을 만들기 위해 다음 명령어를 실행한다.

pyinstaller -F -w -n 기차표예매 -i icon.ico main.py

 

실행해보니 아래와 같이 에러가 뜬다.

ValueError: Received icon image '/Users/dhgwag/Development/train_reservation/icon.ico' which exists but is not in the correct format. On this platform, only ('icns',) images may be used as icons. If Pillow is installed, automatic conversion will be attempted. Please install Pillow or convert your 'ico' file to one of ('icns',) and try again.

.icns 확장자로 .ico를 변경하거나 Pillow를 설치하라는건데 파일 변경은 귀찮으니 Pillow를 깔자.

pip install Pillow

 

다시 pyinstaller 명령어를 실행하면, dist 폴더 아래에 아래와 같이 실행파일이 잘 생성된다.

 

프로그램을 실행해도 잘 실행된다..!

생성된 실행 파일

 

Windows

조금 귀찮은 일인데, PyInstaller를 실행하는 OS에서만 동작가능한 실행 파일이 생성된다.

Windows에 리포지토리를 clone해서 실행파일을 제작해야한다.

 

Mac에서와 동일한 명령어로 만들어보자

pyinstaller -F -w -n 기차표예매 -i icon.ico main.py

 

읭??

 

구글링 결과 해결방법이 크게 두가지로 나뉜다.

1. Windows Defender 중지

2. PyInstaller 직접 빌드해서 설치

 

Windows Defender를 끄는 방법이 제일 간단하겠지만서도, 다른 유저들의 PC에서 동작하지 않을 것을 우려하여 2번 방법을 선택했다.

 

이런 오류가 발생하는 이유를 정리하면, pip로 pyinstaller의 미리 빌드된 버젼이 설치되는데, 빌드된 버젼이 내 PC와 맞지 않아서 발생하는 문제다.

 

문제는 아래 순서대로 해결했다. (참고 사이트 : https://jasmine125.tistory.com/1009)

 

설치된 pyinstaller 삭제

pip uninstall pyinstaller

 

github에서 최신 pyinstaller zip파일 다운받아서 압축 풀기

작성일 기준 최신 버젼 : 6.3.0

 

압축 폴더 아래 bootloader 폴더에서 cmd 실행

아래 명령어로 bootloader 빌드

python ./waf distclean all --target-arch=64bit

상위 폴더로 이동

cd ..

wheel이 없으면 설치

pip install wheel

pyinstaller 설치

pip install .

 

이렇게 하면 에러가 뜨지 않는 pyinstaller가 설치된다.

 

다시 예매 프로그램 경로로 가서 pyinstaller 명령어를 실행하자..!

pyinstaller -F -w -n 기차표예매 -i icon.ico main.py

 

윈도우도 성공!


SRT까지 완료된 상태로 깃허브에 릴리즈를 완료했다..!

 

Mac OS / Windows 각각 실행파일도 올려놨으니, 다운받으면 된다:)

https://github.com/dhgwag/train_reservation/releases/tag/v1.0.0

 

Release Train Reservation 1.0.0 · dhgwag/train_reservation

SRT 예매 기능 구현 완료

github.com

 

[참고 사이트]

 

Pyinstaller 자주 사용하는 옵션 모음

Pyinstaller는 .py 파일을 윈도우에서 실행 가능한 .exe 파일로 변환할 때 사용하는 패키지입니다. 작성한 코드를 파이썬이 설치되지 않은 곳에서 실행하거나 배포할 때 유용하게 쓸 수 있으며 이 글

taedi.net

 

 

PyInstaller로 만든 실행파일을 Trojan 바이러스로 인식하는 문제 해결

PyInstaller로 실행파일을 만들었는데 어처구니 없게 Windows Defender가 Trojan 바이러스로 인식하고 삭제를 해 버린다. Python package는 일반적으로 pip로 설치하는데, PyInstaller는 미리 컴파일된 package를 다

jasmine125.tistory.com