윈도우에서 실행할 GUI 화면을 만든다면 PyQt5 라이브러리를 많이 사용합니다. 완성된 프로그램을 배포하거나 실행하고자 할 때 파이썬이 설치되어 있지 않은 곳이면 어떻게 해야 할까요? 윈도우라면 exe 프로그램을 만들어서 단독 실행이 가능하도록 만들어야 합니다. python 파일을 exe 실행파일로 변환할 수 있는 대표적인 라이브러리가 pyinstaller 입니다.
▼ 먼저 pip 를 이용해서 pyinstaller 을 설치합니다. 명령어는 다음과 같습니다. 2018년 4월 19일 기준으로 최신버전은 3.3.1 입니다.
> pip install pyinstaller Collecting pyinstaller Downloading …. Successfully installed altgraph-0.15 future-0.16.0 macholib-1.9 pefile-2017.11.5 pyinstaller-3.3.1 pypiwin32-223 pywin32-223 You are using pip version 9.0.1, however version 10.0.0 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command. > pyinstaller --version 3.3.1 |
▼ PyQt5 로 만든 python 소스 파일을 exe 로 변환해 보겠습니다. 명령어는 간단합니다. pyinstaller 뒤에 파라미터로 파일을 넘깁니다.
> pyinstaller pyqt5_default.py 103 INFO: PyInstaller: 3.3.1 104 INFO: Python: 3.5.1 …… D:\Project\Python\workspace\chrower\build\pyqt5_default\pyqt5_default.exe 8386 INFO: Building EXE from out00-EXE.toc completed successfully. 9755 INFO: Building COLLECT out00-COLLECT.toc completed successfully. |
▼ 파일은 build 폴더에 만들어 집니다. exe 파일은 콘솔에서 실행해야 합니다. 일반적인 exe 프로그램처럼 더블 클릭하면 화면에서 사라집니다.
▼ exe 프로그램을 더블 클릭해서 실행하고 싶다면 콘솔 창이 출력되지 않도록 옵션을 조절해야 합니다. 명령어는 다음과 같습니다.
--onefile : exe 파일 하나만 생성합니다. --windowed : 콘솔 창을 출력하지 않습니다. > pyinstaller --windowed --onefile pyqt5_default.py |
좀더 상세한 옵션은 다음과 같습니다.
옵션 | 설명 |
--onefile | 실행파일 하나만 생성 |
--onedir | 다렉토리 하나만 생성 |
--tk | TCL/TK 인터페이스 포함 |
--windowed, --noconsole | 실행할 때 도스창을 열지 않음 |
--nowindowed, --console | 도스창을 사용함 |
--strip | exe 라이브러리들을 Strip 로 실행 |
--upx | UPX 를 설치한 경우 실행파일 압축 |
--out | -o DIR 로 해당 경로에 파일 생성 |
--paths | -p DIR 로 해당 경로의 path 사용 |
--icon | 실행파일 아이콘 선택 |
▼ --windowed --onefile 두 옵션을 적용한 결과는 다음과 같습니다. --onefile 을 적용한 결과 하나의 실행 파일만 생성되었습니다.
▼ 다음은 exe 파일을 더블 클릭해 보세요. 그림처럼 콘솔이 실행되지 않고 바로 화면이 사라지지 않습니다. --windowed 옵션을 적용한 결과 입니다.
'파이썬 Python' 카테고리의 다른 글
파이썬(Python) 설치 라이브러리 확인하기 (0) | 2024.08.24 |
---|---|
파이썬(Python) PyQt5 QListWidget 고급, 데이터 옮기기 (0) | 2024.08.24 |
파이썬(Python) PyQt5 QListWidget 위젯 사용하기 (0) | 2024.08.22 |
파이썬(Python) str.format 문자열 형식화 하기 (0) | 2024.08.17 |
파이썬(Python) 문자를 숫자로 변환해서 숫자에 더하는 방법 (0) | 2024.07.21 |
파이썬(Python) 문자열을 나눌 수 있는 split 함수 (1) | 2024.07.21 |
파이썬(Python) Matplotlib 설치 하고 샘플 구동하기 (0) | 2024.07.21 |
파이썬(Python) 두 개의 숫자 더하기 (0) | 2024.07.09 |