Pyinstaller는 Python으로 실행파일을 생성해 배포하기 위해 사용되는 패키지이다. cx_Freeze나 py2exe 등의 패키지도 있지만 개인적으로 가장 사용이 간편하다고 느껴진다.
하지만 고객이 실행파일만 메일로 받고싶어하는 경우도 있고, 실행시 프로그램 부팅 속도를 빠르게 하기위하거나 등 여러가지 이유로 용량이 작은 것이 더 선호된다.
이 때 Anaconda를 사용하여 패키지를 import하고 Pyinstaller를 이용해 마지막으로 패키징을 위해 실행파일을 생성하면 예상보다 훨씬 큰 용량이 되는 것을 볼 수 있다. 거기다 onefile을 사용하지 않으면 훨씬 더 큰 용량으로 패키징이 된다. Anaconda를 사용해 패키지를 설치하면 mkl 계열 dll 파일들이 함께 패키징되기 때문이다. MKL(Math Kernel Library)이란 Intel기반 시스템에서 아래의 영역에 해당하는 수학 계산을 빠르게 수행하기 위해 만든 라이브러리이다.
- Linear Algebra
- Fast Fourier Transforms (FFT)
- Vector Statistics & Data Fitting
- Vector Math & Miscellaneous Solvers
그렇다면 이 MKL 파일을 제외할 수 있다면 용량은 줄어들 것이다. 예를 들어 NumPy를 pip로 설치하면 mkl 계열 dll이 제외되어 용량이 더 작아지는 것을 확인할 수 있다. 내가 직접 Anaconda를 이용하는 상태에서 패키징했을 때 약 500~600MB 정도가 되는 것을 확인했다. onefile로 만들어도 400~500MB 정도였다. 하지만 Anaconda가 아닌 일반 Python 가상환경을 만들고 pip로 설치했을 때는 약 90MB 안쪽으로 용량이 훨씬 작아졌다.
따라서 Anaconda 사용시 패키징 후 용량이 너무 크다면, 일반 Python 가상환경을 만들어서 패키지를 pip를 이용해 다시 설치한 후 실행파일을 생성하면 용량을 줄일 수 있다. Anaconda는 테스트 환경을 구성해주는 역할로 쓰는 것이 좋을듯하다.
참고 자료
https://emilkwak.github.io/numpy-pyinstaller-size-too-big
http://trvoid.blogspot.com/2019/12/intel-mkl-microsoft-visual-c.html

Pyinstaller는 Python으로 실행파일을 생성해 배포하기 위해 사용되는 패키지이다. cx_Freeze나 py2exe 등의 패키지도 있지만 개인적으로 가장 사용이 간편하다고 느껴진다.
하지만 고객이 실행파일만 메일로 받고싶어하는 경우도 있고, 실행시 프로그램 부팅 속도를 빠르게 하기위하거나 등 여러가지 이유로 용량이 작은 것이 더 선호된다.
이 때 Anaconda를 사용하여 패키지를 import하고 Pyinstaller를 이용해 마지막으로 패키징을 위해 실행파일을 생성하면 예상보다 훨씬 큰 용량이 되는 것을 볼 수 있다. 거기다 onefile을 사용하지 않으면 훨씬 더 큰 용량으로 패키징이 된다. Anaconda를 사용해 패키지를 설치하면 mkl 계열 dll 파일들이 함께 패키징되기 때문이다. MKL(Math Kernel Library)이란 Intel기반 시스템에서 아래의 영역에 해당하는 수학 계산을 빠르게 수행하기 위해 만든 라이브러리이다.
- Linear Algebra
- Fast Fourier Transforms (FFT)
- Vector Statistics & Data Fitting
- Vector Math & Miscellaneous Solvers
그렇다면 이 MKL 파일을 제외할 수 있다면 용량은 줄어들 것이다. 예를 들어 NumPy를 pip로 설치하면 mkl 계열 dll이 제외되어 용량이 더 작아지는 것을 확인할 수 있다. 내가 직접 Anaconda를 이용하는 상태에서 패키징했을 때 약 500~600MB 정도가 되는 것을 확인했다. onefile로 만들어도 400~500MB 정도였다. 하지만 Anaconda가 아닌 일반 Python 가상환경을 만들고 pip로 설치했을 때는 약 90MB 안쪽으로 용량이 훨씬 작아졌다.
따라서 Anaconda 사용시 패키징 후 용량이 너무 크다면, 일반 Python 가상환경을 만들어서 패키지를 pip를 이용해 다시 설치한 후 실행파일을 생성하면 용량을 줄일 수 있다. Anaconda는 테스트 환경을 구성해주는 역할로 쓰는 것이 좋을듯하다.
참고 자료
https://emilkwak.github.io/numpy-pyinstaller-size-too-big
http://trvoid.blogspot.com/2019/12/intel-mkl-microsoft-visual-c.html