본문 바로가기
프로그래밍/기타 Python 모듈

Pyinstaller 기본 - 이용하여 파이썬(.py) 파일을 실행 파일(.exe)로 만들기

by 부자 꽁냥이 2023. 3. 17.

Pyinstaller를 이용하면 파이썬(.py) 파일을 실행 파일(.exe)로 만들 수 있다. 이번 포스팅에서는 Pyinstaller의 사용법을 알아보려고 한다. 

 


   Pyinstaller 사용법

1) pyinstaller 설치

먼저 pip 명령을 통해 pyinstaller를 설치한다.

 

pip install pyinstaller

 

당연한 말이겠지만 가상환경을 쓴다면 해당 가상환경 내에 설치해야 한다.

 

 

엉뚱한 곳에 설치하고 다른 가상환경에서 pyinstaller를 실행하면 다른 파이썬 환경을 참조하게 되어 예상치 못한 에러가 발생한다(당연히 하지 말아야 할 실수를 내가 했다 ㅠㅠ). 


2) 실행파일(exe) 만들기

이제 파이썬 파일(.py)을 실행 파일(.exe)로 만들어보자. 먼저 아래와 같은 간단한 파이썬 파일(test.py)을 만들었다. 

 

import numpy as np

if __name__ == '__main__':
    a = input('입력하세요 :')
    print(a)

 

당연히 가상환경이 동작하는 상태에서 위 코드가 있는 곳으로 이동한 다음 아래 명령어를 (프롬프트에서) 실행한다.

 

pyinstall test.py

 

명령어를 실행하고 나서 해당 폴더로 가보면 아래와 같이 build, dist 폴더와 {파이썬 파일 이름}.spec 파일이 생성된 것을 알 수 있다.

 

 

실행 파일은 dist -> {파이썬 파일 이름} -> {파이썬 파일 이름}.exe 에 있다.

 

 

이제 해당 파일을 실행해보자. 더블 클릭으로도 실행할 수 있지만 입력값을 받는 순간 콘솔이 바로 꺼지므로 다음과 같이 프롬프트에서 실행해 보았다.

 

 

예상 대로 잘 실행되었다. 다만 우리가 필요한 건 실행 파일뿐인데 dll 파일과 같은 잡동사니가 많이 있다. pyinstaller는 이러한 잡동사니를 없애고 하나의 실행 파일로 모아주는 -F 옵션이 있다. 

 

pyinstaller -F test.py

 

 

이제 dist 폴더에 가보면 아래와 같이 test.exe만 생성된 것을 확인했으며 아까처럼 실행하면 잘 동작하는 것을 알 수 있다. 그 외 다른 옵션에 대한 설명은 여기를 참고하기 바란다.


3) multiprocessing 사용 시 주의사항

만약 multiprocessing 모듈을 사용하고 있다면 main 구문 바로 뒤에 프로세스 실행의 중복/반복을 막아서 자원을 효율적으로 사용할 수 있게 해주는 freeze_support()를 꼭 호출하자~!! 안 그러면 프로세스가 무한 생성되는 경험을 맛볼 수 있다. 아래와 같이 했는데도 오류가 나면 여기를 참고하기 바란다.

 

from multiprocessing import Pool, freeze_support

if __name__ == '__main__':
    freeze_support()
    ''' 중략 '''

댓글


맨 위로