회사에서 사용할 목적으로 별로 길지도 않고 특별히 복잡하지도 않은
프로그램 하나를 만들었다.
시험삼아 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