윈도우에는 기본적으로 윈도우 디펜더라는 백신이 설치되어 있습니다.
pyinstaller 로 생성한 exe 실행파일이 디펜더에게 바이러스라며 실행이 차단 당하는 문제를 겪었습니다.
os 는 윈도우 11 이었습니다.
pyinstaller 에는 bootloader 라는 개념이 있습니다.
bootloader 는 os 의 그것과는 다르게 미리 컴파일된 특정 플랫폼 전용 라이브러리를 포함시킨 바이너리입니다.
bootloader 가 지정되지 않은 pyinstaller 는 관련한 패키지나 소스를 내려받아 이를 빌드하는 구조입니다.
pip 로 설치한 pyinstaller 로 생성된 exe 는 특정 플랫폼 전용이 아닌 범용이고 다운로드를 높은 확률로 시도할텐데 이를 백신이 바이러스로 판단하는 것으로 추정됩니다.
이것을 어떻게 구축해볼까요?
먼저 pywin32 가 설치되야 합니다.
python3 -m pip install pywin32
위 명령이 제대로 실행되지 않는다면 https://github.com/mhammond/pywin32/releases를 방문해서 본인의 파이썬 버전과 아키텍처에 맞는 설치본을 골라 설치하시면 됩니다.
아래는 제가 시도한 내용입니다.
python3 -m pip uninstall pyinstaller
git clone https://github.com/pyinstaller/pyinstaller.git
cd pyinstaller
cd bootloader
python3 waf all
cd ..
python3 -m pip install .
이제 원래 파이썬 프로젝트 vscode 창을 닫고 다시 열어서 pyinstaller 명령을 실행하시고 생성된 바이너리를 테스트해보시면 됩니다.
전 성공!!