본문 바로가기

Language/Python

Win10 + PyQt5 + pyinstaller + Python3.5 조합으로 exe 파일 만들 때 오류

난다! 에러! 백퍼!


1. PATH 추가

python을 설치하고 사용할줄 아는 사람이라면 환경변수에서 PATH 잡는건 잘 알꺼라 믿고 설명은 생략하겠다.

PATH에 C:\Python35\Lib\site-packages\PyQt5 (이건 내 절대 경로고 각자 자기한테 맞는 경로를 쓸것!) 추가

pip permision err[13] 뜨면 pip 업그레이드 하고 관리자권한으로 cmd 키면 잘 됨..! (아나콘다 쓰는 경우는 잘 모르겠다.)


2. -h, --help

일단 무작정 pyinstaller *.py 치고 보지말고 pyinstaller -h 로 도움말 봐라!

나름 잘 설명되어있다. 어떤 옵션이 있는지 체크하고 문법(?)에 맞게 써라..! 


3. -p DIR, --paths DIR

win10 이라면 WARNING: lib not found: api-ms-win-core-*.dll 뜨면서 실행파일 잘 만들어진다.

근데 그 실행 파일 python 안깔린 컴에서 실행시키거나 암튼 딴데서 실행하면 에러남 ㅎ

저기에 있는데로 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x64 나

C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64에 있는 dll 파일 싹 긁어서 한 파일에 넣고 

-p [dll 때려 넣은 파일 경로] 옵션을 준다! (1번에서 언급한 help에서 잘 보면 어떻게 쓰는지 잘 나와있다.)

참고 : https://winterj.me/pyinstaller/


4. --hidden-import MODULENAME

dll 추가해주고 막 신나서 경고 하나도 안뜨고 막 실행파일 잘 만들어지고 그래서 막 실행하면

ModuleNotFoundError: No module named 'PyQt5.sip' 오류 뜸 ㅎ 아니 PyQt5 깔때 같이 깔려놓고 왜 못찾냐..

얘는 --hidden-import 옵션 써서 sip 있다고 콕 찍어 알려주면 됨

참고 : https://stackoverflow.com/questions/51330113/pyinstaller-pyqt5-installed-with-pip-always-gives-me-error-import-pyqt5-sip



5. -F, --onefile

    실행 파일 한개로 깔쌈하게 만들때 쓰면 좋음


6. -D, --onedir

한폴더로 만들어줌



<<내 최종 명령어>>

C:\pyinstaller_test : 3번에서 dll 모아둔 파일 경로

C:\Python35\PythonWorkspace\Python_examples\sample_code.py : 실행 파일 만들 코드 경로

pyinstaller --onedir --clean --hidden-import=PyQt5.sip -p C:\pyinstaller_test C:\Python35\PythonWorkspace\Python_examples\sample_code.py


ps.

삽질 꽤 했는데 왜 적어놓으니까 몇개 없어 보이는지 모르겠다.

이거 보고 가상 환경 만들라다가 짜증나서 실패함 나중에 가상환경에서 PyQt5 패스 설정 문제 해결가능하면 시도해봐야겠다.

https://github.com/pyinstaller/pyinstaller/wiki/How-to-Report-Bugs#make-sure-everything-is-packaged-correctly