python 스크립트 exe 파일로 빌드하는 법(with pyinstaller)

Overveiw
Python 은 최근 프로그래밍 언어로서 1위를 차지할 정도로 많은 개발자들에게 사랑받는 언어이다. 많은 라이브러리, 배우기 쉬운 언어, 등 다양한 장점이 있지만, 안타깝게도 배포와 관련해서는 그다지 훌륭한 언어가 아닌다.
이 글에서는 비 python 개발자도 쉽게 python 스크립트를 사용할 수 있도록 pyinstaller
모듈을 사용해 exe 파일을 빌드하는 방법에 대해 설명하겠다. 참고로 pyinstaller
로 빌드된 exe 파일은 Windows 10 이상의 OS 에서만 실행 가능하다.
Install
pyinstaller
의 기능을 사용하려면 pyinstaller
모듈을 설치해야 한다.
먼저, 이 글에서는 venv
모듈을 사용해 파이썬 가상 환경을 구성하겠다.
> python -m venv venv
venv
폴더가 생성되면 아래 명령어로 가상 환경에 접속한다.
> .\venv\Scripts\activate
이후 pip
명령어로 pyinstaller
모듈을 설치한다.
(venv) > pip install -U pyinstaller
pyinstaller options
pyinstaller
설치에 성공하면 명령어를 실행하여 가용한 옵션들을 확인할 수 있다.
> pyinstaller
usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME] [--add-data <SRC;DEST or SRC:DEST>]
[--add-binary <SRC;DEST or SRC:DEST>] [-p DIR] [--hidden-import MODULENAME]
[--collect-submodules MODULENAME] [--collect-data MODULENAME] [--collect-binaries MODULENAME]
[--collect-all MODULENAME] [--copy-metadata PACKAGENAME] [--recursive-copy-metadata PACKAGENAME]
[--additional-hooks-dir HOOKSPATH] [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
[--splash IMAGE_FILE] [-d {all,imports,bootloader,noarchive}] [--python-option PYTHON_OPTION] [-s]
[--noupx] [--upx-exclude FILE] [-c] [-w]
[-i <FILE.ico or FILE.exe,ID or FILE.icns or Image or "NONE">] [--disable-windowed-traceback]
[--version-file FILE] [-m <FILE or XML>] [--no-embed-manifest] [-r RESOURCE] [--uac-admin]
[--uac-uiaccess] [--win-private-assemblies] [--win-no-prefer-redirects] [--argv-emulation]
[--osx-bundle-identifier BUNDLE_IDENTIFIER] [--target-architecture ARCH]
[--codesign-identity IDENTITY] [--osx-entitlements-file FILENAME] [--runtime-tmpdir PATH]
[--bootloader-ignore-signals] [--distpath DIR] [--workpath WORKPATH] [-y] [--upx-dir UPX_DIR] [-a]
[--clean] [--log-level LEVEL]
scriptname [scriptname ...]
pyinstaller
의 많은 옵션 중, 핵심 옵션을 요약하면 다음과 같다.
- -F(-onefile) : 단일 exe 파일로 빌드.
- --paths : import 를 위해 탐색해야 하는 경로.venv 를 쓰고 있다면
venv\Lib\site-packages
경로를 paths 에 추가해야 한다.:
를 구분자로 사용할 수 있다고 매뉴얼에 적혀 있긴하나 제대로 인식 못 할 수 있다. 이 경우 해당 옵션을 여러 번 사용하여 다수의 경로를 path 로 지정할 수 있다. - --noconsole : 입출력을 위한 console 창을 생성하지 않도록 하는 옵션.
- --nowindowed : 입출력을 위해 console 창을 생성하는 옵션. default 값.
Build
다음은 simpleutil.py
이라는 임의의 파이썬 스크립트를 pyinstaller 로 빌드하는 명령어이다.
(venv) > pyinstaller -F --paths=C:\Users\Moonding\Documents\SimpleUtil\venv\Lib\site-packages .\simpleutil.py
빌드에 성공하면 dist
,build
폴더가 생성되며, build
폴더에는 exe 파일 빌드 과정에서 생성되는 중간 파일이, dist
폴더에는 최종 결과물인 exe 파일이 생성되는 것을 확인할 수 있다.
