본문 바로가기
리뷰/코딩

pyinstaller 용량 줄이는 방법 (230MB->36MB)

by 파리주걱 2022. 2. 9.

파이썬을 이용하여 토플 스피킹 연습 프로그램을 만들었는데, 별 기능이 없는데 용량이 230MB나 되었다.

확인해본 결과 아나콘다를 이용하여 pyinstaller를 사용하면 생기는 문제였고, 순정 파이썬을 이용해 230MB에서 36MB까지 줄이게 되었다.

 

이 글은 어떻게 문제를 해결 했는지 나중에 까먹으면, 내가 다시 볼 겸 정리한 김에 공유한다.

 

 

1. 문제 원인 파악 - 네이버 검색 : "pyinstaller 용량"

 

pyinstaller로 만든 .exe 파일 용량 줄이기 삽질#2 → 해결 완료!!

pyinstaller 용량 문제 때문에 어제 하루 종일 삽질을 했다 ㅋㅋㅋㅋㅋㅋ 오전 9시부터 시작을 해서, 밤 12...

blog.naver.com

 

일단 위의 블로그에서 삽질을 대신 해 주신 덕분에 문제의 원인과 해결방법을 빠르게 찾을 수 있었다.

그런데 원인은 아나콘다와 pyinstaller 호환성의 문제라고 확인했지만, 해결방법인 파이썬 전체를 삭제 후 재설치할 자신이 없어서 뒤로 미뤘다.

그래서 구글링을 더 하며 가상환경도 만들어보는 등, 이것저것 해 봐도 용량이 전혀 줄어들지 않았다.

 

결국 제자리로 돌아오니, 해결방법은 순정 python을 이용하는 것이었다.

일단 위 블로그와 달리 내 컴퓨터에는 순정 파이썬이 깔려있어서 일단 파이썬을 전체 삭제하지 않고 시도를 해 보았는데 용량은 여전히 컸고, 결국 안쓰던 노트북에 새로 파이썬을 설치해서 해결했다.

그런데 순정버전을 사용하라고 하는데, 처음부터 파이참이나 스파이더같은 프로그램만 써 봐서 파이썬을 어떻게 이용해야 하는지에 대한 설명이 없어서 한참 헤메다가 아래 페이지를 찾았다.

 

 

2. 순정파이썬 설치 및 사용방법 - 코딩도장

 

파이썬 코딩 도장: 3.3 명령 프롬프트에서 Hello, world! 출력하기

이번에는 IDLE을 사용하지 않고 명령 프롬프트에서 파이썬 셸을 실행한 뒤 Hello, world!를 출력해보겠습니다. 그리고 명령 프롬프트에서 스크립트 파일을 실행하는 방법도 알아보겠습니다. 3.3.1 명

dojang.io

파이썬을 모두 삭제하기 귀찮아서 아무것도 깔려있지 않은 노트북을 이용했고, 링크의 코딩도장을 참고했다.

순정 파이썬을 설치할 때, 설치경로를 메모장에 복사 해 놓자.(환경변수를 설정할 때 사용한다)

- 설치경로 : C:\users\<username>\AppData\Local\Programs\Python\Python39

 

파이썬 홈페이지에서 최신버전(현재 3.9)을 다운받은 후, 환경변수를 설정 해 주었다.

자세한 내용은 위 링크를 타고 들어가면 되는데 간단히 요약만 한다.

 

환경변수 설정방법 요약

1) 제어판>시스템 및 보안>시스템>고급 시스템 설정>환경변수(N)

2) <사용자이름>에 대한 사용자변수(U) -> Path -> 편집(E) -> 새로 만들기(N) -> 경로 추가

3) 경로는 2개 추가한다 (파이썬 설치할 때 복사 해 놓은거 사용하면 된다)

- 경로1 : C:\users\....\Python39 <--- 설치경로

- 경로2 : C:\users\....\Python39\Scripts

 

잘은 모르겠으나, 환경변수를 설정 해 주면 명령 프롬프트(CMD)의 폴더위치가 어디가 되든 파이썬을 사용할 수 있게 해 주는 것 같다.

그래서 경로1이 아마 순정 파이썬 실행을, 경로2가 파이썬에 설치된 모듈(pip, pyinstaller 등등)을 사용할 수 있게 해 주는 설정인 것 같다.

 

 

3. pip 및 필요한 모듈 설치

 

명령 프롬프트(CMD)를 관리자 권한으로 실행한 후, exe파일을 생성할 코드(.py)에 필요한 모듈을 설치 해 준다.

내 코드에서 import 된 모듈은 os, sys, time, winsound, pyttsx3, pyqt5라서 다 설치 해 봤는데, os, sys, time, winsound는 기본 내장이라 설치가 안되어 넘어갔다.

 

이 때 사용했던 명령어들 대충 정리하고 넘어가겠다.

1) pip list : 순정상태라 모듈은 2개만 설치되어있었고, pip 업그레이드하라는 명령어를 알려주는 것을 확인했다

2) pip install --upgrade pip : 알려준 업그레이드 실행

3) pip install pyinstaller : pyinstaller 설치

4) pip install pyttsx3 : pyttsx3 모듈 설치

5) pip install pyqt5 : pyqt5 모듈 설치

6) pip install os, sys, time, winsound : 혹시몰라 각각 해 봤는데, 내장모듈인지 설치안되더라

 

 

4. pyinstaller -> .EXE 파일 생성

 

pyinstaller를 실행하기 위해 exe파일을 생성할 코드가 있는 위치로 이동했다.

명령 프롬프트에서 이동하는 방법은 대충 아래와 같다

1) 디스크 이동 : "C:", "D:" 후 엔터

2) 해당위치의 폴더, 파일 확인 : dir, dir/b

3) 상위폴더 : cd..

4) 하위폴더 : cd 폴더명

 

해당하는 폴더로 이동한 후, pyinstaller를 이용하여 exe파일을 생성한다.

프롬프트에 입력 : pyinstaller --clean Beta03.spec

 

여기서 .py가 아닌 spec을 이용했는데, pyinstaller 사용방법은 아래 링크를 참고했다.

 

 

Python 독립 실행형 앱 배포(pyinstaller + ui 파일(복수))

패키징 도구 pyinstaller py2exe py2app py2exe는 Windows 전용이며, py2app은 mac 전용이다. 클로스 플랫폼은 아니지만 pyinstaller는 두 운영체제에서 모두 사용할 수 있다. pyinstaller는 맥에서 작성된 코드를..

editor752.tistory.com

 

 

일단 spec 파일은 --onefile, --w같은 다양한 옵션들을 코드로 만들어 적용할 수 있다.

나의 경우는 이 것을 사용하는게 편했는데, 이유는 아래와 같다.

1) 생성방법을 하나하나 지정하는게 귀찮음 : --onefile, --w 등등

2) pyqt5의 designer를 사용함 : .ui 파일을 포함

3) 파일 아이콘을 추가했음 : .ico 파일 포함

4) 파일 로고를 추가했음 : .png 파일 포함

 

이후에는 spec을 이용하는 방법을 자주 사용할 것 같아서 일단 정리 해 둔다.

1) spec 생성 : pyi -makespec --noconsole --onefile Beta03.py

2) spec 수정 : Beta03.spec을 파이참 혹은 메모장을 이용해서 수정

- 경로 : 그냥 위 블로그 그대로 참고했음. 문제생길 시 다시 방문.

- 파일추가 : datas = [('AA.ui', '.'), ('BB.png', '.')]

- 아이콘 추가, noconsole 등등 옵션은 필요하면 찾아서 하자.

3) pyinstaller 실행 : pyinstaller --clean Beta03.spec

 

 

4. 결론

1) pyinstaller의 용량이 과도한 것은 anaconda-pyinstaller 연동문제

2) 순정 파이썬을 이용하면 해결 가능함

3) 순정 파이썬은 환경변수 설정 후, 명령 프롬프트(CMD)를 이용하면 됨

4) pyinstaller는 .spec을 이용하면 다양한 설정이 편리함

 

 

 

 

끝.

 

 

 

↓↓↓ '♡공감' 버튼 ↓↓↓ 클릭 부탁드립니다

 

댓글