파이썬/오류해결

파이썬 pyinstaller로 exe파일 만든 후 실행하면 실행화면이 사라지는 현상

흘러가는삶 2020. 6. 28. 14:52

회사에서 사용할 목적으로 별로 길지도 않고 특별히 복잡하지도 않은

프로그램 하나를 만들었다.

 

시험삼아 exe 화일로 변경했는데 실행을 하면 감감무소식이다.

 

처음엔 pyinstaller -w xxxxx.py를 해서 dos 창이 안떠서 그런것 같아서

-w옵션을 없앴는데(왜냐하면 실행초기에 변수를 입력받아야 해서

dos 창이 떠야 한다) dos 창은 뜨는데 뭔가 휙 보이다가 닫혀져버리고

더이상 진행이 안 된다.

 

그래서 구글링 해본 결과 누군가 exe 화일 생성시 만나는 오류를 정리해 놓은

사이트를 발견했다.

 

아래에 링크해놓는다.

 

https://coding-yoon.tistory.com/30

 

[파이썬 응용] 4탄 Pyinstaller : exe실행파일 만들기, 오류 해결

안녕하세요. 오늘은 필터 exe파일을 만들면서 막혔던 오류 부분을 설명하도록 하겠습니다. pyinstaller는 pycharm 이나 pip를 통해 깔아줍니다. pyinstaller 사용법은 아주 간단합니다. pyinstaller [파일명].py

coding-yoon.tistory.com

그래도 안되면 openpyxl 버젼을 낮춰본다.

아래는 exe 파일 생성시 recurssion exceeded error 발생시 해결법이다.

pip uninstall openpyxl

pip install openpyxl==2.3.5

 

 

위 내용으로 해결된 줄 알았는데 아니었다.

내 문제는 openpyxl을 import 하면 발생하고 하지 않으면

문제가 안 생기는 거였는데 왜 그런지는 모른다.

 

exe 파일 생성 이후에도 exe 파일을 실행하면 문제가 생겼다.

문제는

exe 파일 생성 후 실행하면 순식간에 프로그램이 떴다가 사라지는 바람에

별도로 화면 녹화 프로그램으로 사라지는 순간을 캡쳐해서 보니

아래와 같은 error message가 보였다.

'No module named 'pkg_resources.py2_warn example.py'

'python failed to execute script pyi_rth_pkgres'

 

이런식의 에러가 보였다.

 

구글링으로 검색해보니 아래와 같이 하면 문제 해결이 된단다.

왜 그런지는 여전히 모른다.

 

pyinstaller --hidden-import=pkg_resources.py2_warn example.py

 

maximum recusrion exceed error는 pyinstaller시 생성되는 동일 파일명의

xxx.spec화일에서 

 

아래 내용을 'block_cipher = None' 구문위에 추가

하면 된다. 

 

import sys
sys.setrecursionlimit(15000)

 

그런후 위의 동일 화일명으로 pyinstaller를 실행한다.

ex. pyinstaller xxx.spec