DevStudy
PyInstaller 본문
실행 파일 만들기 (PyInstaller)
PyInstaller를 이용하면 파이썬과 PyQt5로 제작한 GUI 프로그램을 간단하게 실행파일 (exe)로 만들 수 있습니다. (PyInstaller 홈페이지)
실행파일은 파이썬이 설치되어 있지 않은 pc에서도 프로그램을 실행할 수 있도록 해줍니다.
위젯 - QTextBrowser (Advanced) 페이지에서 작성했던 예제 코드를 실행파일로 만들어 보겠습니다.
PyInstaller 설치
우선 명령프롬프트에서 아래의 명령어를 통해 PyInstaller 패키지를 설치합니다.
pip install pyinstaller
또는
pip3 install pyinstaller

실행파일 만들기
Python 파일이 있는 폴더로 이동한 다음, 아래 명령어를 입력하면 해당 폴더에 실행파일이 만들어집니다.
pyinstaller qtextbrowser_advanced.py

만들어진 폴더에서 dist로 이동해서, 한 번 더 들어가면

아래 그림과 같이 실행파일을 찾을 수 있습니다.

더블클릭해서 실행을 해보면 아래 그림과 같이 콘솔창이 함께 출력됩니다.

콘솔창 출력되지 않도록 하기
콘솔창이 출력되지 않게 하려면 아래와 같이 명령어에 ‘-w’ 또는 ‘–windowed’를 추가해줍니다.
pyinstaller -w qtextbrowser_advanced.py

실행파일 하나만 생성하기
실행파일 하나만 생성하기 위해서는 아래와 같이 명령어에 ‘-F’ 또는 ‘–onefile’을 추가합니다.
pyinstaller -w -F qtextbrowser_advanced.py

실행파일 생성이 완료되었습니다.

다시 dist 폴더로 이동하면 실행파일 하나만 생성된 것을 볼 수 있습니다.

이제 PyQt5와 BeautifulSoup을 이용해서 작성한 코드를 실행파일을 이용해서 실행할 수 있습니다.

참고 사항
1) 하나의 exe 실행파일 형태
가) pyinstaller를 통해 하나의 exe 파일을 생성하는 것이며, 가장 보편적이고 많이 사용하는 형태라고 생각됩니다.
나) 장/단점
- 장점 : 하나의 exe 파일로 배포 가능하며, 압축이 되어 exe 파일사이즈가 작다.
- 단점 : 프로그램 실행시 압축된 exe 파일을 압축해제 후 프로그램이 실행되다 보니 디렉토리 형태에 비해 실행 속도가 느리다.
2) 디렉토리 형태 (여러 부가적인 파일 포함)
가) pyinstaller를 통해 하나의 exe 파일을 생성하는 것이 아닌, exe 파일 실행 시 필요한 부가적인 파일들도 같이 디렉토리 내에 표기 됩니다.
나) 장/단점
- 장점 : 별도의 압축해제 과정이 없어서 프로그램 실행속도가 빠르다.
- 단점 : 파일이 많기 때문에 관리가 번거로우며, 실행파일 사이즈가 압축이 되지 않다보니 하나의 exe 파일 형태보다 파일의 사이즈가 크다.
다시한번 위 2가지 방법의 가장 큰 차이점을 살펴보면 아래와 같습니다.
1) 하나의 exe 실행파일로 생성할지 여부와
2) 프로그램 실행 속도 입니다.
하나의 exe 파일로 생성하는 경우 사용자가 프로그램을 실행 시 exe 로 묶여 있는 파일을 풀어서 실행해 주는 과정이 필요하며, 하나의 실행 파일이 아닌 여러 파일로 생성된 경우는 이 과정이 생략되기 때문에 프로그램 실행 속도 차이가 발생할 수 밖에 없습니다.
파일 사이즈가 작은 경우에는 그 차이가 미비하겠지만, 파일 사이즈가 큰 경우에는 이 차이가 상당하기 때문에 참조하시어 실행파일을 만드시기 바랍니다.
※ 실제 사례 : 코드 작성 후 실행파일을 exe 파일 하나로 묶은 경우 파일 사이즈가 압축이 되어서 300 MB 였었고, 디렉토리 형태로 만든 경우에는 압축이 되지 않아 1 GB가 좀 넘었습니다. 그리고 실행 속도는 exe파일로 만든 경우가 디렉토리 형태로 만든 파일 보다 2배 더 느린 속도를 보였습니다.