Python

[python] pyinstaller로 이미지,소리파일이 포함된 .exe파일 만들기(feat.pygame)

wonhwa 2023. 2. 14. 17:22
반응형

안녕하세요.

그동안 python으로 여러 프로그램을 만들어 보았는데,

그걸 다른 사람에게도 보여주고 싶을 때는

1. python 설치

2. .py 파일 실행

이렇게 번거로운 과정이 필요할 것입니다.

하지만 그동안 만들었던 .py파일 프로그램을 .exe 파일로 만들 수 있다면

상대방 입장에서도 파일을 다운받아 실행하기만 하면 되니 엄청 간편할 것입니다.

이렇게 python 파일을 exe파일로 만들어주는 라이브러리가 있는데요,

그것은 바로 pyinstaller 라는 라이브러리 입니다.

 

pyinstaller 설치

설치 방법은 간단합니다. 터미널창에 아래와 같이 pip를 사용하여 간단히 설치할 수 있습니다.

pip install pyinstaller

 

pyinstaller 사용 방법

pyinstaller는 터미널에 여러 옵션을 주어 exe파일을 만들 수 있습니다.

그중 유용하게 쓰이는 옵션 몇가지를 알려드리자면,

--noconsole : exe파일 실행 시 콘솔창을 나타나지 않게 하기
--onefile : exe파일을 하나의 파일로 한번에 만들기
--icon: exe파일에 사용할 아이콘을 추가
--add-data: 데이터파일 추가

등등이 있습니다.

--icon 옵션을 사용할 때는 .ico, .png 파일 등등을 사용 가능합니다. 실행파일 아이콘이 되는 것이므로 배경은 투명한 배경의 아이콘이 좋습니다.

위의 몇가지 옵션들을 사용하여 exe 파일을 만든다면, 명령어는 아래와 같습니다.

pyinstaller --noconsole --onefile --icon=파일경로\아이콘.png/ico 파일경로\파이썬파일.py

예를 들어, minigame.py라는 파이썬 파일이 있고, star.png라는 아이콘 파일이 있으면 아래와 같이 작성하면 됩니다.

pyinstaller --noconsole --onefile --icon=star.png minigame.py

물론, 파이썬 파일과 png 파일은 해당 터미널 위치에 두 파일이 모두 있어야 합니다.

그러면 dist 파일 안에 exe파일이 만들어집니다.

 

이미지, 소리파일 등등을 .exe파일에 포함하는 방법

저는 전에 제가 pygame으로 만든 미니게임을 exe파일로 만들어 보도록 하겠습니다.

다만, 게임은 보통 이미지 파일과 효과음 등의 소리파일이 포함되어 있습니다.

저는 이 모든 파일을 하나의 exe파일에 포함을 하고 싶기 때문에 추가로 설정을 해주고 .exe파일을 만들어 보도록 하겠습니다.

1. 파이썬 파일(.py)에 설정값 넣어주기

exe파일로 만들려는. py파일 스크립트 맨 위에 아래와 같이 코드를 추가해줍니다.

import sys,os

if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
    os.chdir(sys._MEIPASS)

2. pyinstaller로 --add-data 파일/폴더 옵션 설정하여 exe파일 만들기 

만약 추가할 이미지 등의 파일이 한가지라면 --add-data 파일경로/파일 이렇게 끝에 옵션을 추가해 주면 됩니다.

저의 경우는 resource라는 폴더 안에 이미지, 소리 등의 파일이 다 들어있어서 폴더를 추가해 주도록 하겠습니다.

제 터미널 위치에 있는 파일 예시는 아래와 같습니다.

pygame/
|--- minigame.py
|--- resources/
     |--- enemy.jpg
     |--- player.jpg
     |--- game_over.wav
     |--- background.wav
     |--- babychick.ico

 

터미널이 위치한 pygame 폴더 안에

minigame.py라는 파이썬 게임파일과,

resources라는 게임을 동작하기 위해 필요한 이미지, 소리파일들이 있습니다.

저는 그리고 exe 아이콘으로 resources 폴더 안에 있는 babychick.ico라는 이미지를 사용하도록 하겠습니다.

(※참고: 아이콘 이미지는 여기에서 찾아서 다운받을 수 있습니다.)

이렇게 exe파일을 만들기 위한 명령어는 아래와 같습니다.

pyinstaller --noconsole --onefile --icon=resources\babychick.ico minigame.py --add-data "resources;resources"

--add -data 를 사용하여 resources폴더를 exe에 추가하였습니다.

그러면,

해당 pygame폴더 위치에 build, dist 등의 폴더가 생기며,(build 폴더는 삭제하셔도 exe 실행하는 데 문제가 없습니다.)

우리가 원하는 exe파일은 dist 폴더에 위치해 있습니다.

이 .exe파일만 따로 빼서 다른 사람들에게 보내면

추가로 파이썬을 설치하거나 할 필요 없이 바로 파일실행으로 게임이 실행됩니다:)

결과물

 

참고자료

https://pyinstaller.org/en/stable/index.html

 

PyInstaller Manual — PyInstaller 5.8.0 documentation

PyInstaller bundles a Python application and all its dependencies into a single package. The user can run the packaged app without installing a Python interpreter or any modules. PyInstaller supports Python 3.7 and newer, and correctly bundles many major P

pyinstaller.org

https://api.arcade.academy/en/latest/tutorials/bundling_with_pyinstaller/index.html

 

Bundling a Game with PyInstaller - Python Arcade 2.6.17

Previous GPU Particle Burst

api.arcade.academy

 

마무리

제가 만든 .exe파일은 소리, 이미지 파일을 추가하다보니 용량이 커져서 실행 시작때 조금 느리지만(259MB 정도 됩니다...)

게임은 실행이 잘 되니 좋습니다:)

여러분들도 한번 그동안 만들었던 파이썬 파일로 실행파일 만들어서

친구,가족분들께 보여주면 좋을 것 같습니다.

반응형