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

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 파일이 생성되는 것을 확인할 수 있다.

Reference