Pyinstaller는 python 프로그램을 빌드하여 Windows, Linux 환경에서 작동할 수 있게 만들어주는 프로그램입니다.
Pyinstaller는 사용하기 간편하고, python에서 가장 많이 사용되는 빌드 프로그램입니다. 그러나 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는 일반적으로 exe 프로그램이나, dll 파일 크기를 약 50% ~ 70% 사이로 줄이는 프로그램입니다.
Python 프로그램을 Pyinstaller로 빌드하면 dll 파일들이 용량을 많이 차지하는데요, 이 dll 파일들을 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 가량으로 줄어든 것이죠.
잘보고갑니다 👍