파이썬 스크립트를 윈도우용 실행 파일(.exe)로 만들려면 PyInstaller라는 도구를 사용하는 것이 가장 일반적이고 효율적입니다. PyInstaller는 파이썬 코드를 윈도우, macOS, 리눅스 등 다양한 운영체제에서 실행 가능한 독립적인 애플리케이션으로 패키징해줍니다.
PyInstaller를 사용하여 실행 파일 만들기
1. PyInstaller 설치
먼저, 명령 프롬프트(Command Prompt)를 열고 다음 명령어를 입력하여 PyInstaller를 설치합니다.
pip install pyinstaller
2. 실행 파일 만들기
PyInstaller를 설치했다면, 실행 파일로 만들고 싶은 파이썬 스크립트(.py 파일)가 있는 디렉터리로 이동합니다. 명령 프롬프트에서 cd 명령어를 사용하여 이동할 수 있습니다. 예를 들어, test.py 파일이 C:\Users\User\Documents에 있다면 다음과 같이 이동합니다.
cd C:\Users\User\Documents
그 다음, 다음 명령어를 실행하여 실행 파일을 만듭니다.
pyinstaller test.py
명령어를 실행하면 dist라는 폴더가 생성되고, 그 안에 test.exe 실행 파일이 들어있습니다. 이 파일을 실행하면 파이썬 스크립트가 실행됩니다.
3. 단일 파일로 만들기
만약 여러 파일이 아닌 하나의 실행 파일만 만들고 싶다면, -F 옵션을 추가합니다.
pyinstaller -F test.py
이 명령어를 사용하면 test.exe 파일 하나만 생성되어 배포하기에 더 편리합니다.
4. 콘솔 숨기기
파이썬 스크립트가 GUI 애플리케이션(예: tkinter, PyQt)이어서 명령 프롬프트 창이 필요 없다면, --noconsole 옵션을 추가하여 실행 시 콘솔 창이 나타나지 않게 할 수 있습니다.
pyinstaller --noconsole test.py
5. 아이콘 추가
실행 파일에 특정 아이콘을 추가하고 싶다면, .ico 형식의 아이콘 파일을 준비하고 -i 옵션을 사용합니다.
pyinstaller -i icon.ico test.py
질문)
pyinstaller -i icon.ico test.py 실행파일에 아이콘이 추가가 안될때
PyInstaller로 실행 파일을 만들 때 아이콘이 적용되지 않는 문제는 몇 가지 원인으로 발생할 수 있습니다. 가장 흔한 원인은 다음과 같습니다.
1. 아이콘 파일 형식 확인
PyInstaller는 .ico 형식의 아이콘 파일만 지원합니다. 만약 다른 형식(예: .png, .jpg)의 파일을 사용하고 있다면, 먼저 online-convert.com 또는 Convertio 같은 온라인 변환기나, 포토샵, GIMP와 같은 이미지 편집 프로그램을 사용하여 .ico 형식으로 변환해야 합니다.
2. 아이콘 파일 경로 확인
PyInstaller 명령어를 실행하는 현재 작업 디렉터리에 아이콘 파일이 있는지 확인하세요. 만약 icon.ico 파일이 다른 폴더에 있다면, 파일의 절대 경로를 지정해야 합니다.
예시:
pyinstaller -i "C:\Users\User\Desktop\my_app_icons\icon.ico" test.py
3. PyInstaller 버전 문제
간혹 PyInstaller의 특정 버전에서 버그로 인해 아이콘이 제대로 적용되지 않는 경우가 있습니다. 이럴 때는 PyInstaller를 최신 버전으로 업데이트하거나, 문제가 없다고 알려진 특정 버전으로 재설치해볼 수 있습니다.
PyInstaller 업데이트:
pip install --upgrade pyinstaller
4. UAC(사용자 계정 컨트롤) 문제
윈도우의 UAC(사용자 계정 컨트롤) 설정이 높은 경우, 아이콘 변경이 제대로 적용되지 않을 수 있습니다. 이 경우, 명령 프롬프트를 '관리자 권한으로 실행'하여 PyInstaller 명령어를 다시 시도해 보세요.
문제 해결 단계 요약
- 아이콘 파일 확장자를 .ico로 변환했는지 확인합니다.
- pyinstaller 명령어를 실행하는 경로에 아이콘 파일이 있는지 확인하거나, 아이콘 파일의 전체 경로를 입력했는지 확인합니다.
- 명령 프롬프트를 관리자 권한으로 실행해서 다시 시도합니다.
- PyInstaller를 최신 버전으로 업데이트합니다.
질문)
pyinstaller -F test.py 을 하면 실행파일 하나만 생성되나요?
네, 맞습니다. pyinstaller -F test.py 명령어를 사용하면 하나의 실행 파일(.exe)만 생성됩니다.
PyInstaller의 기본 동작은 실행 파일을 포함한 여러 파일과 폴더를 dist 디렉터리 안에 생성하는 것입니다. 이는 --onefile 옵션이 없을 때의 동작입니다.
하지만 -F 옵션(이는 --onefile의 약어입니다)을 추가하면, PyInstaller는 스크립트와 모든 필요한 라이브러리, 파이썬 인터프리터 등을 압축하여 하나의 실행 파일로 만듭니다.
이 하나의 실행 파일은 사용자에게 배포하기 편리하다는 장점이 있지만, 실행 시 압축을 풀어 임시 폴더에 파일을 생성한 후 실행하기 때문에 실행 속도가 약간 느려질 수 있습니다. 반면 --onefile 옵션 없이 여러 파일로 생성하면 실행 속도는 더 빠르지만, 배포 시 여러 파일을 함께 압축해서 보내야 하는 번거로움이 있습니다.
추가질문)
pyinstaller -F test.py 이렇게 했는데, dist 폴더가 생성되고 그 안에 실행 파일이 있습니다.
pyinstaller -F test.py 명령은 '하나의 실행 파일'을 만들라는 의미이며, 이 실행 파일이 dist 폴더 내에 생성됩니다. dist 폴더는 PyInstaller가 최종 결과물(배포용 파일)을 모아두는 곳입니다.
dist는 distribution(배포)의 약어로, PyInstaller는 생성된 실행 파일과 필요한 모든 리소스 파일을 이 폴더에 넣습니다.
정리하자면, 다음과 같습니다.
- pyinstaller test.py: dist 폴더 안에 여러 파일(실행 파일, DLL 등)이 생성됩니다.
- pyinstaller -F test.py: dist 폴더 안에 하나의 실행 파일만 생성됩니다.
어떤 명령어를 사용하든 최종 결과물은 항상 dist 폴더 안에 위치하게 됩니다. 따라서 dist 폴더를 확인하고 그 안에 있는 .exe 파일을 실행하시면 됩니다.
실행결과에 대한 질문)
실행시키면, 결과값이 나온과 동시에 cmd창이 닫아져 버립니다.
결과를 확인하기 전에 명령 프롬프트(CMD) 창이 닫히는 현상은 파이썬 스크립트가 실행을 마치면 자동으로 종료되기 때문입니다.
해결 방법
이 문제를 해결하는 가장 쉬운 방법은 스크립트가 사용자 입력이 있을 때까지 기다리도록 만드는 것입니다. 스크립트 끝에 다음 코드 중 하나를 추가해 보세요.
1. input() 함수 사용
가장 간단한 방법입니다. 사용자가 엔터 키를 누를 때까지 프로그램이 멈춥니다.
# 기존 스크립트 내용
print("결과값입니다.")
# ... 기타 코드
# 사용자 입력 대기 코드 추가
input("결과를 보려면 엔터 키를 누르세요...")
2. os.system('pause') 사용
윈도우 명령어인 pause를 호출하여 "계속하려면 아무 키나 누르십시오 . . ." 라는 메시지가 뜨도록 할 수 있습니다. 이 방법을 사용하려면 스크립트 상단에 import os를 추가해야 합니다.
import os
# 기존 스크립트 내용
print("결과값입니다.")
# ... 기타 코드
# 사용자 입력 대기 코드 추가
os.system('pause')
3. try...except 문 사용
예외가 발생할 경우에도 창이 바로 닫히지 않고 오류 메시지를 볼 수 있도록 try...except 문과 input()을 함께 사용할 수 있습니다.
try:
# 기존 스크립트 내용
print("결과값입니다.")
# ... 기타 코드
except Exception as e:
print(f"오류가 발생했습니다: {e}")
finally:
input("결과를 보려면 엔터 키를 누르세요...")
위 방법 중 하나를 선택하여 스크립트의 맨 마지막 줄에 추가한 뒤, PyInstaller로 다시 실행 파일을 만들면 됩니다. 그러면 실행 파일이 종료되지 않고 결과를 충분히 확인할 수 있습니다.
핵심질문)
cmd 창을 안닫고 계속 실행시킬려면 어떻게 해야 하나요?
CMD 창을 계속 열어두려면 파이썬 스크립트 실행이 끝난 후, 사용자 입력이 있을 때까지 대기하도록 코드를 추가해야 합니다.
해결 방법
가장 간단한 방법은 스크립트의 마지막 줄에 다음 코드 중 하나를 추가하는 것입니다.
1. input() 함수 사용
input() 함수를 사용하면 사용자가 엔터 키를 누를 때까지 프로그램이 멈춥니다.
# 기존 스크립트 내용...
print("프로그램 실행이 완료되었습니다.")
input("결과를 보려면 엔터 키를 누르세요...")
이 방법은 가장 범용적이고 파이썬 버전과 상관없이 잘 작동합니다.
2. os.system('pause') 사용
윈도우 pause 명령어를 사용하여 "계속하려면 아무 키나 누르십시오 . . ." 라는 메시지를 표시할 수 있습니다.
import os
# 기존 스크립트 내용...
print("프로그램 실행이 완료되었습니다.")
os.system('pause')
이 방법은 import os가 필요하며, 윈도우 환경에서만 작동합니다.
위 코드를 스크립트에 추가한 후, PyInstaller로 다시 실행 파일을 만들면 CMD 창이 결과를 보여준 뒤 바로 닫히지 않고 사용자의 입력을 기다리게 됩니다.
질문)
실행파일을 더블클릭해서 실행 후 결과값이 나오고 아무키나 입력하라고 해서 입력하면 창이 닫아져 버립니다. 입력값을 계속 다시 받게 하고 싶습니다.
실행 파일에서 결과값을 출력한 후, 사용자가 아무 키나 입력하면 프로그램이 종료되는 것은 현재 스크립트가 한 번의 입력을 받고 바로 끝나도록 작성되었기 때문입니다. 입력을 계속해서 받으려면, 입력 받는 코드를 무한 루프(infinite loop) 안에 넣어야 합니다.
반복 입력받기
결과를 출력하고 사용자가 다음 입력을 계속해서 할 수 있도록 하려면 while True:와 같은 무한 루프를 사용하면 됩니다. 이렇게 하면 프로그램이 종료되지 않고 사용자가 직접 종료할 때까지 계속해서 입력을 기다리게 됩니다.
예시 코드:
아래 코드는 input()을 사용하여 사용자의 입력을 계속해서 받는 간단한 예시입니다. 사용자가 'exit'를 입력하면 루프가 종료되고 프로그램이 끝납니다.
import sys
def my_program():
# 여기에서 실행할 프로그램의 로직을 작성합니다.
# 예를 들어, 현재 시간을 출력하는 코드를 넣어보겠습니다.
print("안녕하세요! 저는 당신의 AI 어시스턴트입니다.")
print("종료하려면 'exit'를 입력하세요.")
# 메인 로직을 무한 루프에 넣습니다.
if __name__ == "__main__":
my_program()
while True:
user_input = input(">> ")
if user_input.lower() == 'exit':
print("프로그램을 종료합니다.")
sys.exit(0) # 프로그램 종료
else:
print(f"당신이 입력한 값: {user_input}")
# 입력값에 따라 다른 동작을 하도록 코드를 추가할 수 있습니다.
이 코드를 test.py 파일에 저장한 후, PyInstaller로 실행 파일을 다시 만들면 이제 더 이상 창이 닫히지 않고 사용자가 'exit'를 입력하기 전까지 계속해서 입력을 받을 수 있습니다. 💻
'파이썬(Python)' 카테고리의 다른 글
| 파이썬, while문을 이용한 반복 출력 소스 (1) (0) | 2025.08.29 |
|---|---|
| 파이썬 실행파일, IDE Shell로 연습한 소스를 실행파일로 만드는 방법 정리-(2 of 2) (3) | 2025.08.27 |
| 파이썬, 항공권 할인율을 조회하여 출력하는 소스 (2) | 2025.08.26 |
| 파이썬, 연도와 월을 입력받아 해당 연도 월의 일수를 출력하는 프로그램 (1) | 2025.08.26 |
| 파이썬, BMI 지수 프로그램 소스 (0) | 2025.08.24 |
콘텐츠 내 자동삽입광고
