-
Python/PyInstaller 사용법코딩/Python 2024. 7. 8. 12:05728x90
PyInstaller는 파이썬 코드를 실행파일로 만들어주는 프로그램이다.
기본적으로는 터미널환경에서 사용되며 필요한 경우 파이썬 코드에서도 구현할 수 있다.
PyInstaller에 대해 자세히 알려면 아래 링크를 참조한다.
또는 상세한 번역본은 아래 링크를 참조한다.
Python/PyInstaller/0. PyInstaller Manual
Python/PyInstaller/1. What PyInstaller Does and How It Does It
Python/PyInstaller/2. Using PyInstaller
설치
pip install -U pyinstaller
실행
pyinstaller your_program.py
생성된 프로그램은 dist 폴더에 저장된다.
PyInstaller 작동 이해
PyInstaller는 사용자가 작성한 Python 스크립트를 읽고 코드를 분석하여 스크립트를 실행하는 데 필요한 다른 모든 모듈과 라이브러리를 검색한 후 모든 파일의 복사본을 하위 폴더에 넣거나 옵션에 따라 단일 실행파일에 저장한다.
PyInstaller는 부트로더라는 프로그램이 저장된 코드를 읽고 실행한다.
실제 작동되는 것은 프로그램 자체가 아니라 부트로더가 프로그램이 실행되도록 지휘한다.단일실행파일로 만들거나 라이브러리등을 하위 폴더에 저장할 수도 있다.
단일실행파일로 만드는 것은 편리하긴 하지만 속도가 느려지는 단점이 있다.
용량을 줄이기 위해 단일실행파일은 라이브러리등을 압축해 저장하고 실행할 때 압축된 파일들을 임시폴더에 압축해제 한 후 실행하기 때문에 속도가 느려지는 문제가 있다.소스코드는 읽혀질 수 있다. .pyc 파일이 소스코드를 저장하기 때문에 소스코드를 숨기고 싶다면 Cython을 이용해야 한다. Cython은 코드를 기계어로 컴파일해서 저장하기 때문에 소스코드를 읽을 수 없게 만든다.
옵션들
여러 옵션들 중 꼭 필요한 것들만 설명한다.
-h, --help
도움말 메시지를 표시하고 종료한다.
-D, --onedir
실행 파일이 포함된 단일 폴더 번들 생성(기본값)
-c, --console, --nowindowed
표준 I/O용 콘솔 창을 연다(기본값). Windows에서 첫 번째 스크립트가 '.pyw' 파일인 경우 이 옵션은 효과가 없다.
-w, --windowed, --noconsole
Windows 및 Mac OS X: 표준 I/O용 콘솔 창을 제공하지 않는다. Mac OS에서는 Mac OS .app 번들 빌드도 트리거된다. Windows에서는 첫 번째 스크립트가 '.pyw' 파일인 경우 이 옵션이 자동으로 설정된다. 이 옵션은 *NIX 시스템에서는 무시된다.
--hide-console {hide-early,minimize-late,hide-late,minimize-early}
Windows에만 해당: 콘솔 지원 실행 파일에서 프로그램이 콘솔 창을 소유한 경우(즉, 기존 콘솔 창에서 실행되지 않은 경우) 부트로더가 자동으로 콘솔 창을 숨기거나 최소화하도록 한다.
-i <FILE.ico or FILE.exe,ID or FILE.icns or Image or "NONE">, --icon <FILE.ico or FILE.exe,ID or FILE.icns or Image or "NONE">
FILE.ico: Windows 실행 파일에 아이콘을 적용한다. FILE.exe,ID: exe에서 ID가 포함된 아이콘을 추출한다. FILE.icns: Mac OS의 .app 번들에 아이콘을 적용한다. 플랫폼 형식(Windows의 경우 ico, Mac의 경우 icns)이 아닌 이미지 파일을 입력하면 PyInstaller는 Pillow를 사용하여 아이콘을 올바른 형식(Pillow가 설치된 경우)으로 변환하려고 한다. 아이콘을 적용하지 않으려면 "NONE"을 사용하여 OS에 기본값을 표시한다(기본값: PyInstaller의 아이콘 적용). 이 옵션은 여러 번 사용할 수 있다.
--disable-windowed-traceback
창 모드(콘솔 없음) 모드(Windows 및 macOS만 해당)에서 처리되지 않은 예외의 역추적 덤프를 비활성화하고 대신 이 기능이 비활성화되었다는 메시지를 표시한다.
728x90'코딩 > Python' 카테고리의 다른 글
Python/PyInstaller/1. What PyInstaller Does and How It Does It (0) 2024.07.08 Python/PyInstaller/2. Using PyInstaller (0) 2024.07.08 Python/python-pptx 사용자 가이드 (0) 2024.06.12 Python/python-pptx 사용자 가이드 - 15. Concepts (0) 2024.06.12 Python/python-pptx 사용자 가이드 - 14. Cases (0) 2024.06.12