반응형

안녕하세요.

 

오늘은 필터 exe파일을 만들면서 막혔던 오류 부분을 설명하도록 하겠습니다.

 

pyinstaller는 pycharm 이나 pip를 통해 깔아줍니다.

 

pyinstaller 사용법은 아주 간단합니다.

 

pyinstaller [파일명].py

 

가장 많이 사용하는 옵션을 설명하겠습니다.

 

-w : 콘솔창을 띄우지 않습니다.

-F : 파일 하나만 생성합니다. 

 

pyinstaller -w -F [파일명].py or pyinstaller -noconsole -onefile [파일명].py

 

기본적인 사용방법입니다. (당연히 [파일명].py가 존재하는 경로에 pyinstaller를 해주어야 합니다.)

 

아마 이 글을 읽으시는 분들이 방법은 알지만 오류로 인해 검색하시다 보니 여기까지 오시게 되었겠죠?

 

대단한 것은 아니지만 제가 exe파일을 만들면서 접했던 오류들을 해결하면서 배웠던 것을 적도록 하겠습니다.

 

 

 

 

 

 

 

1. unicodeDecodeError : 'utf-8' codec can't decode byte 0xff

 

아마 utf-8 오류가 떠서 uft-8 decoding을 해주셨을겁니다.

 

#-*- coding:utf-8 -*-

 

아마 이 부분을 추가해주셨겠지요?

 

하지만 아쉽게도 uft-8 decoding을 해주어도 똑같은 오류가 발생합니다. 

 

이 오류가 뜨는 이유는 여러분들이 잘못을 한 것이 아니라 pyinstaller의 고질적인 문제라고 합니다.

 

https://github.com/pyinstaller/pyinstaller/pull/3895

 

Specify the utf-8 encoding when opening a text file by bjones1 · Pull Request #3895 · pyinstaller/pyinstaller

This is a fix for #3605, and generally for a number of places in the code where the encoding wasn't specified when opening a file. Since getting this working required more complexity than I exp...

github.com

Python\Lib\site-packages\Pyinstaller\compat.py

 

위 경로에 compat.py를 찾아 열어줍니다.

 

compat.py에 저 아래 라인을 수정해 줍니다.

 

out = out.decode(encoding)

 

a. 해결방법 -> out = out.decode(encoding, errors='ignore')

b. 해결방법 -> out = out.decode(encoding, "replace")

 

저렇게 수정해주시고 다시 돌려보시면 에러를 무시한채 해결됩니다.

 

 

 

 

 

 

2. import module error

 

library를 많이 쓰다 보면 module error가 발생하게 됩니다.

 

pyinstaller로 파일을 만들면은 

 

pycache

build

dist

[파일명].spec

 

이렇게 생성될겁니다.

 

[파일명].spec 을 열어줍니다.

 

[파일명].spec

hiddenimports = []

 

위 부분에 오류가 뜨는 함수를 적어주면 됩니다.

 

예를 들어

 

numpy, matplotlib가 오류가 발생한다면,

 

hiddenimports = ['numpy', 'matplotlib'] 이렇게 추가해주시면 됩니다.

 

pyinstaller가 완전한 실행 프로그램이 아니라서 오류가 많이 발생합니다.

 

저는 프로그램 만드는 것보다 exe파일 만드는 부분에 힘을 너무 많이 사용해서...

 

python이 코딩엔 상당히 강력하지만, exe나 속도는 상당히 취약합니다...

 

하지만 데이터처리나, 라이브러리이 너무 매력적이라서... 

 

pyinstaller 글을 마치도록 하겠습니다.

 

왠지 pyinstaller는 아마 계속해서 새로운 오류가 발생해서 글을 마칠 수 없을 것 같습니다 ㅎ

 

728x90
반응형

+ Recent posts