PyInstaller란?
PyInstaller란 코딩한 파이썬 프로그램을 파이썬에 대해 전혀 모르는 분들도 사용하실 수 있도록 실행 파일(.exe)로 만들어주는 파이썬 패키지입니다.
<PyInstaller 공식 문서>
1) Python 3.6이상만 사용 가능
2) Windows, Mac OS X 및 GNU / Linux에서 사용가능함
3) Windows에서 컴파일 된 실행파일은 Windows에서만 사용가능 (다른 OS의 경우도 마찬가지)
4) Windows 8 이상만 지원 / Mac OS X 10.7(Lion) 이상만 지원
https://pyinstaller.readthedocs.io/en/stable/
설치 방법
지금 껏 다른 패키지를 설치하신 분들은 아시겠지만, 아래의 코드는 터미널창에서 실행해 주셔야합니다.
# 설치
pip install pyinstaller
# 최신 버전으로 업그레이드 (첫 설치 시에는 필요없음)
pip install --upgrade pyinstaller
# 설치되어 있는지 확인
pyinstaller --version
초간단 사용 방법
PyInstaller를 사용하기 위해서는 별도의 import가 필요없습니다. 사용 시에도 설치했을 때와 마찬가지로 터미널 창에서 입력해주시면 됩니다.
# 가장 기본적인 사용법
pyinstaller 파이썬 파일명.py
아주 간단한 코드를 작성해서 pyinstaller로 실행파일을 만들어 보았습니다. build 폴더와 dist 폴더가 생기는데 우리가 사용할 exe 파일은 dist 폴더에 생성됩니다. 여기서 주목하실 점은 너무나도 많은 파일들이 지저분하게(?) 생성된다는 것입니다. 다른 사람에게 배포할 때 이렇게 전달하기엔 좀 별로겠죠?
그래서 아래의 코드를 사용하시길 추천드립니다. PyInstaller에는 여러가지 옵션들이 있지만 딱 알아야하는 것만 설명드리도록 하겠습니다.
pyinstaller -F -w 파이썬 파일명.py
1) -F, --onefile
방금 전과 같이 지저분하게 파일이 생성되지 않고, 실행파일 1개만 생성되도록 해주는 설정입니다.
2) -w, --windowed, --noconsole
기본적으로 실행 파일을 실행하면 표준 I/O용 콘솔 창(까만 창)을 열도록 되어있는데 이걸 뜨지 않도록 하는 옵션입니다.
(뜨지 않는다고 하는데 저는 자꾸 뜨네요.. 이 부분은 조금 더 공부해서 반영하도록 하겠습니다)
mac os에서는 이 옵션을 넣어주면 귀여운 아이콘의 파일(.app 번들 빌드)가 나오는데 어디다 쓰는지는 잘 모르겠네요!
생성된 실행 파일을 더블클릭해서 실행하면 아래와 같이 print(a+b)의 결과인 15를 출력해주는 것을 보실 수 있습니다.
<참고> 실행파일 아이콘 변경하기
출처. 블로그 <IT에 취.하.개>
실행파일의 아이콘을 바꾸고 싶다면, '--icon = ico 파일의 경로'을 추가해주시면 됩니다. 이미지의 포맷은 꼭 ico여야 합니다.
# ico 파일의 경로에서 ./의 의미는 현재 폴더라는 뜻, 절대경로를 넣어줘도 됨
pyinstaller --icon=./test.ico --onefile 파이썬 파일명.py
<icon-icons, 무료 아이콘 다운로드 사이트>
<참고 자료>
https://hongku.tistory.com/338 [IT에 취.하.개.]
exe 파일 용량 줄이기
간단한 프로그램인데 만들었더니 200~300MB..! 저도 겪었지만 다른 많은분들도 겪으셨으리라 생각됩니다.
저의 경우도 최근에 같은 문제를 겪었던 적이 있습니다.
여기저기 많이 찾아보니, 원인은 conda 명령어로 numpy와 pandas 패키지를 설치했기 때문이라고 합니다. 정확히 이유는 알 수 없으나 conda와 pyinstaller가 잘 맞지 않는 것 같네요.
다른 똑똑하신 분들이 찾으셨던 해결 방법은 크게 3가지입니다.
(글을 쓰다보니 아마도 1번 방법이 가장 합리적인 방법이라 생각됩니다)
<참고> 1번 방법을 사용하는데에 도움되는 코딩유치원 글
2021.12.07 - [파이썬 기초/개발환경 구축(VScode)] - [Python/VScode] 파이썬 가상환경 만들고 사용하는 법 상세정리
1) 새로운 가상환경을 만들어서 conda로 설치된 numpy나 pandas 패키지를 pip로 설치
https://emilkwak.github.io/numpy-pyinstaller-size-too-big
2) Python 공식 홈페이지를 통해 설치한 순정(?) 파이썬을 설치해서 여기서 pyinstaller 실행
3) Anaconda의 가상환경(제가 주로 사용하는 'base': conda)를 그대로 사용하면서 '--exclude 패키지명' 옵션으로 특정 패키지 제외
아직 저에게도 환경 셋팅을 하는건 너무 어려워서 1, 2번 방법은 시도하다가 실패했고, 3번 방법을 통해서 해결했습니다.
다만, 저의 경우엔 pandas와 numpy를 사용하지 않는 프로그램이어서 가능했던 방법이었습니다. 이 방법을 사용하니 330MB에다가 초기 실행속도도 느렸던 프로그램이 45MB로 용량이 줄어들고 속도도 빨라지는 것을 확인할 수 있었습니다.
# 가장 큰 패키지인 pandas와 numpy 제외
pyinstaller -F -w --exclude pandas, --exclude numpy 파이썬 파일명.py
오늘 준비한 내용은 여기까지입니다.
감사합니다.
'Be Smart > Python' 카테고리의 다른 글
[Python] 반복문 크롤링 중 오류 발생 시 그 반복문 횟수로 다시 돌아가서 돌아가게 하기 (0) | 2022.08.25 |
---|---|
Module 'pywintypes' isn't in frozen sys.path 오류 해결법 (0) | 2022.07.27 |
작업스케줄러로 Python Batch파일 실행하기 (0) | 2022.05.03 |
[python] 오라클 DB 파이썬과 연동하기 사용법 (0) | 2021.11.08 |
VScode에서 Jupyter Notebook 가상환경 커널 추가하기 (0) | 2021.08.07 |
댓글