작성한 코드를 매번 편집기로 열어서 실행하는 것은 귀찮은 일입니다. 더군다나 이를 배포해야 된다고 생각하면 머리가 복잡해집니다. 파이썬을 아는 사람에게는 가능하지만, 모른다면 코드 상태로 전달하기는 어렵습니다. 그래서 완성된 코드라면 실행파일 형태로 만드는 것이 유용할 때가 많습니다. 오늘은 파이썬 코드를 실행파일 형태로 만드는 방법에 대해서 알아보겠습니다.

 

 

1. bat 배치파일 만들기

가장 쉽고 빠른 방법입니다. 파이썬 코드를 실행하는 명령 프롬프트 명령어를 그대로 넣으면 됩니다. 파이썬 코드를 실행하고 추가 시스템 명령이 필요하면, 그 뒤에 붙여 넣으면 됩니다. 윈도에서는 메모장을 열고, 내용을 입력한 후 저장할 때 확장자를 bat로 하면 되지요. 맥의 배치파일 만드는 방법은 윈도와는 조금 다릅니다.

 

 

2. pyinstaller로 exe파일 만들기

배치파일은 내가 쓰기는 편리하나, 남에게 전달하기는 어렵습니다. 파이썬 환경이 동일하게 구성돼야 사용할 수 있기 때문입니다. 그래서 파이썬을 모르는 사람에게는 pyinstaller를 이용해서 exe파일로 만드는 것이 좋다. exe파일은 맥에서 실행되지 않지만, pyinstaller를 맥에서 실행하면 맥에서 실행가능한 app파일로 만들어 줍니다.


다만 여러가지 패키지를 사용하면, 에러가 발생하거나 파일이 무거워질 수 있기 때문에 최대한 간소화해서 작성하는 것이 좋겠습니다.

 

 

사용법은 아래와 같습니다.

우선 pyinstaller를 설치합니다. pip install pyinstaller 명령으로 쉽게 설치할 수 있습니다.

 

이후에는 명령프롬프트에서 'pyinstaller main.py'와 같이 입력합니다. 그러면 파이썬 파일이 있는 폴더에 dist폴더가 생기고, 그 안에 파이썬 파일 이름과 동일한 exe 파일을 볼 수 있습니다.

 

실행 파일을 만들 때 몇 가지 옵션을 줄 수 있습니다. 그 중에서 가장 유용한 건 -F 실행파일 하나만 만드는 옵션입니다. 다만 실행파일 하나만 만들면, 필요한 파일을 압축했다가 실행하는 시점에 압축을 해제해서 사용됩니다. 그래서 파일이 무겁거나 속도가 필요하다면 해당 옵션은 자제하는 것이 좋겠습니다.

 

- pyinstaller 실행파일 만들기 옵션

옵션 내용
-w 콘솔창이 출력되지 않습니다
-F 실행파일 하나만 생성합니
--icon=icon.ico 실행파일에 아이콘을 넣습니다

 

 

3. 파이참에게 연결하기

파이참을 이용한다면 pyinstaller를 더 쉽게 사용할 수 있는 방법이 있습니다. 파이참의 external tools 기능을 이용하면, 버튼 클릭으로 실행파일을 만들 수 있지요.

 

파이참 설정에서 [Tools] - [External Tools] 메뉴로 이동합니다. + 아이콘을 클릭하여 작성 메뉴로 들어갑니다. Name에는 메뉴 이름을 적습니다. 필자는 그냥 '파이썬 실행파일 만들기'라고 적었습니다. Program에서는 pyinstaller라고 적습니다. Path 환경설정이 되어 있지 않으면, Pyinstaller가 설치된 폴더 위치까지 적어줘야 합니다. argument는 '-F $FilePath$'라고 적었습니다. -F는 실행파일 하나만 만드는 옵션이기 때문에 원치 않으면 적지 않아도 됩니다. Working directory는 $ProjectFileDir$라고 적습니다.

 

 

파이참-설정-화면
파이썬-실행파일-만들기

 

 

파이썬 실행파일을 만들 때는 파일을 지정해야 하기 때문에, 파이참 좌측의 탐색기 창에서 파일을 선택합니다. 마우스 우클릭하고, External Tools에 파이썬 실행파일 만들기를 선택하면 됩니다.

 

참고할 점은 파이썬 가상환경을 이용할 때입니다. 위와 같이 만들면 가상환경이 아닌 기본 설치된 파이썬을 이용해서 만듭니다. 가상 환경을 이용한다면 패키지를 별도로 설치하고, 해당 가상 환경에 있는 pyinstaller를 이용해서 만들어야 합니다.


오늘은 위와 같이 파이썬 실행파일 만드는 2가지 방법에 대해서 알아보았습니다. 배치파일을 만드는 것이 가장 편리하지만, 프로그램이 간단하다면 exe파일을 만들어서 사용하는 것도 좋겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기