Pyinstaller로 만든 실행 파일 UPX로 용량 줄이기

soooooooooo·2021년 7월 7일
2

Pyinstaller?

Pyinstaller는 python 프로그램을 빌드하여 Windows, Linux 환경에서 작동할 수 있게 만들어주는 프로그램입니다.

Pyinstaller는 사용하기 간편하고, python에서 가장 많이 사용되는 빌드 프로그램입니다. 그러나 Pyinstaller에는 큰 단점이 있습니다. 그것은 바로 용량인데요.

Pyinstaller 빌드의 거대한 용량

python에서 정말 많이 사용하는 라이브러리인 numpy를 import하고 Pyinstaller로 빌드를 해서 용량을 봐봅시다.

# numpy_test.py
import numpy

print("hello")

numpy를 단순 import해서 간단하게 작동만 되는지 확인하는 print를 찍는 프로그램입니다.

pyinstaller --onedir numpy_test.py

실행 파일은 dist/numpy_test 폴더에 numpy_test.exe 로 만들어집니다.

numpy_test 폴더의 용량을 확인하면 대략 50메가 부근으로 나오는 것을 확인 할 수 있습니다. 간혹, 50메가를 넘어서 200메가 용량을 차지하는 경우가 있는데, 대부분 conda install numpy를 하셔서 용량이 늘은 것이니, pip install numpy를 사용하여서 다시 pyinstaller 구우시면 됩니다.

UPX?

UPX는 일반적으로 exe 프로그램이나, dll 파일 크기를 약 50% ~ 70% 사이로 줄이는 프로그램입니다.

Python 프로그램을 Pyinstaller로 빌드하면 dll 파일들이 용량을 많이 차지하는데요, 이 dll 파일들을 upx 프로그램으로 용량을 줄일 수 있습니다.

UPX로 빌드된 프로그램 용량 줄이기

Pyinstaller에서는 UPX를 지원하는데요, UPX로 Pyinstaller를 압축하는 법은 간단합니다.

우선 UPX 프로그램을 다운로드합니다. 저는 윈도우 64bit 환경이므로 upx-3.96-win64.zip 파일을 다운 받아서 압축을 풀어주겠습니다. 본인 환경에 맞는 upx 버전을 다운받아서 사용하시면 됩니다.

저는 C:\upx396w 경로에 압축을 풀었습니다. 이제 Pyinstaller로 upx 프로그램을 사용하여 빌드해봅시다.

pyinstaller --upx-dir C:\upx396w --onedir numpy_test.py

Pyinstaller upx-dir 옵션을 주고 upx 압축 푼 폴더 경로를 지정해줍니다. upx.exe가 들어있는 경로를 주는것이고, upx.exe 까지 넣어주면 안됩니다.

빌드가 되고 용량을 확인하시면, 17메가 부근으로 나오는 것을 확인 할 수 있습니다. 거의 3분의 1 가량으로 줄어든 것이죠.

1개의 댓글

comment-user-thumbnail
2021년 7월 7일

잘보고갑니다 👍

답글 달기