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

Pyinstaller 이용하여 Python 소스코드 실행파일(exe)로 만들어보자.

by _BlankSpace 2019. 6. 8.

프로그램을 만들다 보면, 실제로 실행파일(exe) 로 만들어 보고 싶을 때가 있습니다.


이러한 생각을 파이썬을 다뤄보다가 생각나서, 혹시나 파이썬에는 실행파일을 만드는 라이브러리가 따로 있지 않을까 하여 검색해봤습니다.


그랬더니, 역시나 따로 있더군요. 이래서 다들 파이썬하는가 봅니다. (물론, 요즘 언어들 대부분이 실행파일을 만드는 방법이 그리 어렵지는 않을 것 같긴 하지만요.)


아무튼, 검색하다보니, Pyinstaller를 이용하면 쉽게 실행파일을 만들 수 있다는 것을 알게되어, 실제로 만들어보면서 포스팅에 정리하려 합니다.


 0. 들어가기 전에..


일단, 저의 환경으로는 윈도우7에서 진행하였습니다. 리눅스에서 따라하셔도 별 차이는 없을 것으로 판단하여, 따로 정리하지는 않겠습니다.


이번 포스팅을 따라하시려면 아래의 준비가 필요합니다.

- Python 설치 (저의 경우에는 python 3.7을 이용하였습니다.)

- pip 설치 (Python을 기본으로 설치하셨으면, pip는 자동으로 깔립니다. 그래도 모르니, 확인 한번 해보시는 것이 좋을 것 같습니다.)


위의 두 가지 정도의 준비만 있다면, 포스팅을 따라하는 것에 무리가 없을 것입니다.


 1. Pyinstaller를 설치하자. 


이번 포스팅에서 가장 핵심이라고 할 수 있는 pyintaller 설치입니다.

혹시나, Pyinstaller 관련 소개 페이지 링크를 원하시면 아래 링크를 참고하세요.

https://pypi.org/project/PyInstaller/


Pyinstaller 개요는 아래와 같습니다.

PyInstaller bundles a Python application and all its dependencies into a single package. The user can run the packaged app without installing a Python interpreter or any modules.


간단하게 설명하자면, Pyinstaller를 이용하면 Python 인터프리터나 다른 모듈을 설치할 필요 없이 패키지된 앱을 실행할 수 있다네요.


그럼, 설치를 시작하도록 하겠습니다.

윈도우 콘솔창을 열어서 아래 명령어를 입력해주세요.

1
> python pip install pyinstaller
cs


혹시나, 실행이 안되시는 분이 계실 수도 있습니다. 그러신 분들은 콘솔창에서 python 디렉토리가 위치한 곳으로 이동한 후에 다시 위에 명령어를 입력해보세요.

그래도 안되시는 분들은 댓글 남겨주시면, 최대한 도움 드릴 수 있도록 하겠습니다.




 2. 실행파일로 만들 파이썬 소스코드를 구현하자. 


이번 포스팅을 위해서 간단하게 사칙연산을 할 수 있는 프로그램을 만들어보았습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def add(num1, num2) :
    return num1 + num2
 
def minus(num1, num2) :
    return num1 - num2
 
def multiply(num1, num2) :
    return num1 * num2
 
def division(num1, num2) :
    return num1 / num2
 
if __name__ == "__main__" :
    flag = True
    while flag :
        s = input("수식을 띄어서 입력하세요. [ex)1 + 3] 종료를 원하시면 0을 입력하세요.\n")
        num = s.split(' ')
        if len(num) == 3 :
            if num[1== '+' :
                print('{0} + {1} = {2}'.format(num[0], num[2], add(int(num[0]), int(num[2]))))
            elif num[1== '-' :
                print('{0} - {1} = {2}'.format(num[0], num[2], minus(int(num[0]), int(num[2]))))
            elif num[1== '*' :
                print('{0} * {1} = {2}'.format(num[0], num[2], multiply(int(num[0]), int(num[2]))))
            elif num[1== '/' :
                print('{0} / {1} = {2}'.format(num[0], num[2], division(int(num[0]), int(num[2]))))
            else :
                print('수식을 잘못 입력하였습니다')
        elif s == '0' :
            flag = False
            print('0을 입력하셨습니다. 종료합니다.')
cs


굉장히 간단한 소스코드죠? 이번 포스팅을 위해서 긴급하게 만들었답니다.

혹시나, 간단하게 포스팅을 따라하고 싶으신 분은 위에 코드를 사용하여 진행해보세요.

위의 코드는 아래 링크에서 복사하시면 될 거에요.

https://github.com/cryrin10/practice/blob/master/Python/Calculator.py


 3. 소스코드를 실행파일로 만들자. 


이제, 본론인 Pyinstaller를 이용하여, 소스코드를 실행파일로 만들어보겠습니다.


먼저, 콘솔창의 위치를 python 디렉토리로 이동합니다. 그 이유는 pyinstaller도 같은 위치에 있거든요.

상대 경로를 이용하기 위해서, 실행파일로 만들 파이썬 소스코드와 아이콘을 같은 위치로 옮겨주세요.


예를 들면, C:\Programs\Python\Python37-32\Scripts 이라는 위치에 python 코드 및 pyinstaller가 있다고 가정해보겠습니다.

그러면, 동일한 위치에 소스코드 파일과 아이콘을 같이 위치시키면 된다는 말입니다. (상대경로를 이용하기 위해서)


다 하셨으면, 아래 명령어를 콘솔창에서 실행해주세요.


1
pyinstaller test.py
cs


만약, 위에 명령어가 성공하였다면, 아래 이미지처럼 _pycache_, build, dist 디렉토리가 생성된 것을 확인할 수 있습니다.

dist 디렉토리에 들어가보시면, 실행파일(exe) 이 생성된 것을 확인할 수 있을거에요.


혹시, 실행파일에 아이콘을 변경하고 싶은 분도 있으실텐데요. pyinstaller는 아이콘도 변경할 수있도록 명령어를 제공하고 있습니다.

추가로, -i 옵션을 주고 이미지 파일의 이름을 적어주시면 되겠습니다. 아래는 그 예가 되겠습니다.


1
pyinstaller -i icon.ico test.py 
cs



실행이 제대로 되시나요? 분명, 문제가 있을거에요. 바로, 파일을 이동시키면 콘솔창이 뜨자마자 종료되거든요.

이것은 -F 옵션으로 해결하면 됩니다. 다음 예제를 따라하시면 여러 파일들로 쪼개졌던 것들이 exe 파일 하나로 묶여서 생성됩니다.

즉, 아래와 같이 exe 파일을 만드시면 제대로 동작하는 실행파일을 만들 수 있을거에요!


1
pyinstaller -F test.py 
cs



저의 경우에는 아래처럼 만들어진 것을 확인할 수 있었습니다.


처음부터 따라오셨다면, 쉽게 할 수 있다는 것을 알 수 있을거에요. 혹시나, 안되시는 분은 댓글남겨주세요.

이상으로 포스팅을 마치겠습니다.


서로 이웃 추가 및 구독은 항상 환영합니다. :)

댓글