Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- database
- mybatis
- eclipse
- 스프링
- 웹프로그래밍
- rdbms
- 파이썬
- spring
- mysql
- 알고리즘
- Oracle
- BOJ
- 자바스크립트
- 오라클
- 에러
- javascript
- java
- flask
- sql
- db
- 데이터베이스
- jQuery
- 자바
- TIL
- 이클립스
- Git
- 백준
- PYTHON
- 링크
- 플라스크
Archives
- Today
- Total
기록과 정리의 공간
[프로젝트] pyinstaller로 파이썬파일(.py) 실행파일(.exe)로 변환하기(feat.pygame) 본문
pygame
라이브러리를 이용해 만든 간단한 게임 파일을 지인들에게 배포하기 위해 pyinstaller
를 이용하여 .py
-> .exe
로 변환하는 과정을 정리해보았다.
- 참고 자료: 유튭영상
- 개발 환경 : Windows10 / Python3.8
- 프로젝트 폴더 구조
0. pyinstaller 패키지를 설치하기 전에 반드시 확인해 봐야할 것
- 현재 pip버전이 18.1인지 확인 (아니라면, 18.1로 설치해야한다.) : 참고 링크
- setuptools 패키지가 설치되어 있는지 (없다면, 설치하되 45미만의 버전으로 설치해야한다. 있다면, 버전이 45미만인지 체크) : 참고 링크
1. pyinstaller 패키지 설치하기
이 패키지를 사용하면 파이썬 파일을 손쉽게 실행파일로 변환할 수 있다.
pip install pyinstaller
2. cmd창을 열어 변환하고자 하는 .py파일이 있는 폴더로 이동 후 아래와 같이 입력한다.
pyinstaller game.py --onefile --noconsole
- --onefile 옵션 : dist폴더 안에 하나의 .exe파일로 생성
- --noconsole 옵션 : .exe파일 실행시 콘솔창 뜨지 않게 함
- 실행파일 아이콘 변경 옵션에 관한 것은 이곳을 참고하자
그러면 해당 폴더 안에 build
, dist
, .spec
가 생성된 것을 확인할 수 있다.
dist
폴더 안을 확인해보면 --onefile
옵션에 의해 .exe
파일 하나로 생성된 것을 확인할 수 있다.
그런데 이 상태로 해당 .exe
파일을 실행하면 아래와 같은 오류가 발생한다.
Fail to execute script pyi_rth_pkgres
3. 게임 실행에 필요한 것들을 dist폴더로 복붙해준다.
게임에 필요한 리소스들은 전부 resources
에 들어있고, 아래와 같이 .py
파일 내에 상대 경로로 작성되어 있다.
player = pygame.image.load("resources/images/player.png")
따라서, 이 폴더를 .exe
파일이 위치하고 있는 dist
폴더로 복붙한다.
4. .exe
파일과 resources
를 압축하여 하나의 파일로 만들기
5. 배포하기
이제 이 압축한 .zip
파일을 배포하면 된다!
당연한 이야기지만, 압축 해제 후에 resources
와 .exe
가 같이 들어있는 폴더에서 .exe
를 실행해야한다.
(참고) pygame을 이용해 작성된 .py를 .exe로 변환할 때 발생할 수 있는 현상
.py
파일로 게임을 실행했을 때는 전혀 문제 없이 게임이 실행 됐는데, 변환 후에 .exe
파일로 실행하면 pygame스크린이 잠시 나타났다가 바로 종료 되어버리는 현상이 발생했다. 이는 pygame.font.SysFont()
로 인해 발생하는 현상이었다.
- 참고 링크 : 클릭
- 해결 방법 : .py 파일안에 pygame.font.SysFont()를 사용한 코드가 있다면, 첫번째 인자값을 확인해봐야한다.None이라면 위와 같은 현상이 발생한다. 이를 'Sans'로 수정해주고(특정 폰트 이름으로 수정) pyinstaller로 다시 빌드 해주면 문제 없이 실행된다.
'프로젝트 > 슈팅게임1' 카테고리의 다른 글
[프로젝트] 게임 재시작시 발생하는 문제 정리 (0) | 2020.06.28 |
---|
Comments