코딩연습

[Python] PyInstaller 사용법 정리!

철인31호 2024. 7. 27. 12:16
반응형


Python으로 개발한 프로그램을 배포할 때, 종종 사용자가 Python 인터프리터를 설치하지 않아도 실행 가능한 형태로 배포하고 싶을 때가 있습니다. 이럴 때 PyInstaller를 사용하면 Python 코드를 독립 실행 파일(executable)로 만들 수 있습니다. PyInstaller는 Windows, macOS, 그리고 Linux를 모두 지원하며, 다양한 Python 버전을 지원합니다.

 

 

 

PyInstaller 설치

PyInstaller를 사용하기 위해서는 먼저 설치해야 합니다. 터미널(또는 명령 프롬프트)을 열고 다음 명령어를 입력합니다:

pip install pyinstaller

 


기본 사용법

PyInstaller의 기본 사용법은 매우 간단합니다. 다음과 같은 Python 스크립트 `example.py`가 있다고 가정해보겠습니다:

# example.py
print("Hello, PyInstaller!")


이 스크립트를 실행 파일로 만들기 위해 다음 명령어를 입력합니다:

pyinstaller example.py

 


이 명령어를 실행하면 PyInstaller는 여러 파일과 폴더를 생성합니다. 생성된 파일과 폴더는 다음과 같습니다:

- `dist/`: 실행 파일이 생성되는 디렉토리
- `build/`: 빌드 과정에서 생성된 임시 파일들이 저장되는 디렉토리
- `example.spec`: 빌드 설정 파일
- 기타 로그 파일 등

`dist/` 디렉토리 안에 `example`라는 이름의 실행 파일이 생성됩니다. 이 파일을 다른 컴퓨터로 옮겨 실행하면 됩니다.

 

추가 옵션

PyInstaller는 다양한 옵션을 제공하여 빌드 과정을 커스터마이징할 수 있습니다. 몇 가지 유용한 옵션을 소개합니다:

단일 실행 파일 만들기

기본적으로 PyInstaller는 실행 파일 외에도 여러 의존 파일을 함께 생성합니다. 만약 하나의 실행 파일로 만들고 싶다면 `--onefile` 옵션을 사용하면 됩니다:

pyinstaller --onefile example.py


이 옵션을 사용하면 `dist/` 디렉토리에 단일 실행 파일이 생성됩니다.

 

콘솔 없이 GUI 애플리케이션 만들기

기본적으로 PyInstaller는 콘솔 창을 엽니다. 만약 GUI 애플리케이션을 만들고 싶다면 `--noconsole` 옵션을 사용하면 됩니다:

pyinstaller --noconsole example.py


이 옵션을 사용하면 실행 시 콘솔 창이 열리지 않습니다.

 

아이콘 설정

실행 파일의 아이콘을 설정하려면 `--icon` 옵션을 사용하면 됩니다. 아이콘 파일은 `.ico` 형식이어야 합니다:

pyinstaller --onefile --icon=youricon.ico example.py

 

 

추가 파일 포함

만약 추가로 포함해야 할 파일이 있다면 `--add-data` 옵션을 사용하면 됩니다. 예를 들어, `data` 디렉토리를 포함하고 싶다면 다음과 같이 작성합니다:

pyinstaller --add-data "data;data" example.py


이 옵션은 `data` 디렉토리를 빌드된 실행 파일에 포함시킵니다.

스펙 파일 사용

PyInstaller는 빌드 설정을 스펙 파일(`.spec`)로 저장합니다. 스펙 파일을 수정하면 더 복잡한 설정도 가능합니다. 예를 들어, `example.spec` 파일을 열어 다음과 같이 수정할 수 있습니다:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['example.py'],
    pathex=[],
    binaries=[],
    datas=[('data', 'data')],
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='example',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    icon='youricon.ico',
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='example',
)

 

스펙 파일을 사용하면 더욱 정교한 빌드 설정을 관리할 수 있습니다.


PyInstaller는 Python 애플리케이션을 배포하기 위한 강력한 도구입니다. 간단한 스크립트부터 복잡한 프로젝트까지 손쉽게 실행 파일로 변환할 수 있습니다. 다양한 옵션을 통해 빌드 과정을 커스터마이징하고, 스펙 파일을 사용하여 더욱 세밀한 제어가 가능합니다. PyInstaller를 통해 여러분의 Python 애플리케이션을 더욱 쉽게 배포해 보세요!

 

반응형