본문 바로가기

Python

Pyinstaller 설치, 사용법, 옵션, 에러해결

 

 

파이썬을 배포하기 위해 .py 파일을 .exe 파일로 변환해주는 Pyinstaller 사용법에 대해 정리해봅시다.

 


1. pyinstaller 설치


윈도우 cmd 창에서 pip로 pyinstaller를 설치하면 된다.

 

pip install pyinstaller

 

 

2. 사용법


exe 파일로 만들 파일이 있는 경로에서 다음과 같이 명령어를 작성해준다.

pyinstaller [options] OOOO.py

 

그러면 .\dist 에 OOOO.exe 형태로 저장되어 있을 것이다.

 

 

 

3. 옵션


옵션은 cmd창에 pyinstaller를 쳐서 확인할 수 있고, 여기에서도 확인 가능하다.

 

 

아래는 몇 개 옵션에 대한 설명이다. 자주 쓰이는 것으로 보이는 옵션은  노란색으로 표시해두었다.


(1) 일반적인 옵션

  • --distpath DIR : bundled app을 저장할 경로 (디폴트 : ./dist)

  • --workpath WORKPATH : temporary 작업 파일을 저장할 곳 (디폴트 : ./build)

  • --noconfirm : output 경로를 물어보지 않고 지정 (디폴트 : SPECPATH/dist/SPECNAME)

  • --clean : 빌드하기 전에 캐시와 temp 파일들 제거

  • --log-level LEVEL : 빌드할 때, console에 프린트될 메시지 디테일 정도 (LEVEL은 TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL 중에 하나가 될 수 있으며, 디폴트는 INFO이다)


(2) 산출물 관련 옵션

  • --onedir : 하나의 folder bundle로 만들어줌 (default)

  • --onefile : 하나의 실행 파일로 만들어줌


(3) 묶을 파일들에 대한 옵션

  • --add-data <SRC;DEST or SRC:DEST> : executable 파일 외 더 추가되어야 할 non-binary 파일이나 폴더. 구분자는 윈도우에서는 ;로 사용하고, unix 계열 시스템에서는 :를 사용한다. 이 옵션은 여러번 사용 가능하다.cf. 이미지.png 등 포함 가능

  • --add-binary <SRC;DEST or SRC:DEST> : executable 파일 외 더 추가되어야 할 binary 파일. 여러번 사용 가능

  • --paths DIR : imports를 위해 탐색줘야 할 경로 설정. ':'로 구분하여 여러 path 설정 가능

  • --hidden-import MODULENAME : 스크립트 속 코드에 나와 있지 않은 import 명시


(4) 생성 방식에 대한 옵션

  • --debug <all, imports, bootloader, noarchive> : frozen application의 디버깅을 제공해줌


(5) 윈도우 관련 옵션

  • --nowindowed : 입출력을 위해 console 창을 연다 (default)

  • --noconsole : 입출력을 위한 console 창이 만들어지지 않음

 

 

 

4. unicodedecodeerror 에러 해결


필자의 경우, 아래와 같은 에러가 떴다.

 

unicodedecodeerror : 'utf-8' codec can't decode byte ~~~ 

 

그래서 Python\Lib\site-packages\Pyinstaller\compat.py 속 있는 모든

 

out = out.decode(encoding)

 

을 모두

 

out = out.decode(encoding, errors='ignore')
# or
out = out.decode(encoding, errors='replace')

 

로 바꿔주어 해결하였다.

 

 

 

 

 

 


입출력, bundled files에 대한 내용은 공부한 다음 포스팅해야겠다!

 

 

- 끝!!