파이썬 안 깔린 컴퓨터에서도 OK! 내 코드를 완벽한 .exe 실행 파일로 만들기

 21편에서 우리는 까만 도스 창을 없애고 버튼이 달린 예쁜 윈도우 창(GUI)을 만들었습니다. 이제 당당하게 .bat 파일과 코드를 팀장님께 넘겨드렸는데, 팀장님 자리에서 실행해 보니 알 수 없는 에러가 뜨며 프로그램이 켜지지 않습니다. 이유가 뭘까요? 바로 팀장님의 컴퓨터에는 '파이썬'이 설치되어 있지 않기 때문입니다.

우리가 쓰는 한글(.hwp) 파일을 보려면 한컴오피스가 깔려있어야 하듯, 파이썬 코드(.py)를 돌리려면 파이썬이 깔려있어야 합니다. 하지만 바쁜 타 부서 사람들에게 "이걸 쓰시려면 파이썬부터 설치하세요"라고 말할 수는 없죠. 그래서 파이썬과 내 코드를 하나의 보따리로 꽉 묶어서, 더블클릭만 하면 무조건 켜지는 독립적인 실행 파일(.exe)로 변환하는 작업이 필요합니다. 오늘은 그 마법의 도구인 PyInstaller를 배워보겠습니다.


1. PyInstaller 설치하기

가장 먼저 파이썬 코드를 .exe로 변환해 줄 공장장 역할을 하는 라이브러리를 설치해야 합니다. 까만색 터미널(명령 프롬프트) 창을 열고 아래 명령어를 입력해 주세요.

pip install pyinstaller


2. 마법의 명령어 한 줄: -F 와 -w

설치가 끝났다면, 내가 짠 파이썬 코드 파일(예: auto_report.py)이 있는 폴더로 이동하여 터미널 창을 엽니다. 그리고 아래의 마법의 명령어 딱 한 줄만 입력하고 엔터를 치시면 됩니다.

pyinstaller -F -w auto_report.py

여기서 알파벳 옵션 두 가지가 가장 중요합니다.

  • -F (대문자): One File의 약자입니다. 복잡한 폴더나 부수적인 파일들을 흩어놓지 않고, 깔끔하게 .exe 파일 딱 1개로 뭉쳐서 만들어 달라는 뜻입니다.
  • -w (소문자): Window의 약자입니다. 프로그램을 실행했을 때 뒤에 거슬리게 따라붙는 까만색 도스 창(콘솔 창)을 숨겨달라는 뜻입니다. (만약 21편의 GUI 창 없이 단순한 코드만 짰다면, 작동 과정을 보기 위해 -w는 빼고 하시는 것이 좋습니다.)

3. 결과물은 dist 폴더 안에 있습니다

명령어를 치면 화면에 알 수 없는 영어들이 막 지나가면서 컴퓨터가 열심히 일하기 시작합니다. 1~2분 정도 기다리면 completed successfully. 라는 문구와 함께 작업이 끝납니다.

이제 여러분의 코드가 있던 폴더를 살펴보세요. build, dist 같은 새로운 폴더들이 여러 개 생겨있을 것입니다. 다른 것은 다 무시하시고 dist (distribution, 배포) 폴더 안으로 들어가 봅니다. 그곳에 여러분이 그토록 원하던 auto_report.exe 파일이 영롱하게 자리 잡고 있습니다!

이제 이 .exe 파일 하나만 USB에 담거나 메일로 팀장님께 보내면 끝입니다. 파이썬이 안 깔린 팀장님 컴퓨터, 집 컴퓨터, 회의실 공용 컴퓨터 어디서든 이 파일만 더블클릭하면 여러분이 만든 자동화 프로그램이 완벽하게 실행됩니다.


⚠️ 실무 주의사항: 백신이 바이러스로 오해할 때

내가 직접 짠 안전한 코드임에도 불구하고, PyInstaller로 만든 실행 파일을 다른 컴퓨터로 옮기면 가끔 윈도우 디펜더나 백신 프로그램이 "위험한 파일일 수 있습니다!"라며 실행을 차단(오진)하는 경우가 있습니다. 해커들이 바이러스를 배포할 때 쓰는 방식과 포장 방식이 비슷해서 일어나는 해프닝입니다. 이럴 때는 당황하지 마시고 백신 설정에서 '예외 파일(신뢰할 수 있는 파일)로 등록' 하거나, '추가 정보 -> 실행'을 눌러주시면 아무 문제 없이 작동합니다.


▶ 핵심 요약

  • 파이썬이 설치되지 않은 환경에서도 코드를 실행하려면 PyInstaller 라이브러리를 통해 코드를 .exe 파일로 변환해야 합니다.
  • 터미널에서 pyinstaller -F -w 파일명.py 명령어를 입력하면 까만 도스 창이 없는 단일 실행 파일로 변환할 수 있습니다.
  • 변환이 완료된 최종 실행 파일은 자동으로 생성된 dist 폴더 안에서 찾을 수 있습니다.

배포까지 완벽해졌지만, 자동화 프로그램이 제대로 돌았는지 매번 메일을 열어 확인하는 것도 번거롭습니다. 다음 23편에서는 '보고서 작성이 끝나면 내 카카오톡이나 슬랙(Slack), 텔레그램 메신저로 완료 알림(문자) 자동 전송하기'라는 신기능을 탑재해 보겠습니다.


직접 만든 프로그램을 .exe 파일로 변환해서 동료에게 선물해 본다면, 여러분은 누구에게 이 '칼퇴근 봇'을 가장 먼저 건네주고 싶으신가요? 상사? 아니면 가장 친한 동기? 댓글로 알려주세요!


댓글

이 블로그의 인기 게시물

엑셀로는 안 열리는 200만 행 대용량 데이터, 파이썬으로 1초 만에 요약하기

수식이 걸린 엑셀 데이터, 파이썬으로 불렀더니 NaN이 뜨는 이유와 해결법

"파일을 찾을 수 없습니다" - 경로 오류(Path error)가 발생하는 이유와 대처법