파이썬(Python) Pyinstaller 로 exe 실행 파일 만드는 방법

파이썬 Python

파이썬(Python) Pyinstaller exe 실행 파일 만드는 방법

 

환경: PyCharm, Python 3.3

 

윈도우에서 실행할 GUI 화면을 만든다면 PyQt5 라이브러리를 많이 사용합니다. 완성된 프로그램을 배포하거나 실행하고자 할 때 파이썬이 설치되어 있지 않은 곳이면 어떻게 해야 할까요? 윈도우라면 exe 프로그램을 만들어서 단독 실행이 가능하도록 만들어야 합니다. python 파일을 exe 실행파일로 변환할 수 있는 대표적인 라이브러리가 pyinstaller 입니다.

 

먼저 pip 를 이용해서 pyinstaller 을 설치합니다. 명령어는 다음과 같습니다. 2018419일 기준으로 최신버전은 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 프로그램처럼 더블 클릭하면 화면에서 사라집니다.

파이썬(Python) Pyinstaller 로 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 을 적용한 결과 하나의 실행 파일만 생성되었습니다

파이썬(Python) Pyinstaller 로 exe 실행 파일 만드는 방법

 

다음은 exe 파일을 더블 클릭해 보세요. 그림처럼 콘솔이 실행되지 않고 바로 화면이 사라지지 않습니다. --windowed 옵션을 적용한 결과 입니다

파이썬(Python) Pyinstaller 로 exe 실행 파일 만드는 방법

Posted by 녹두장군

댓글을 달아 주세요

  1. jackey 2019.02.26 16:57  댓글주소  수정/삭제  댓글쓰기

    안녕하세요.
    글 잘 봤습니다.
    저는 파일 생성은 되는 데요. 아래와 같은 메세지가 나옵니다.

    Error loading Python DLL 'c:\Users\local_ojguiak\Documents\Python\build\UI_Test_HelloWorld\python37.dll'.
    LoadLibrary: 지정된 모듈을 찾을 수 없습니다.

    컴파일 할떄도 warning 이 나오는데요. 왜 그런지 질문을 드려도 될지....(python+PyQt5 오늘 첨 해봅니다 T.T)

    c:\Users\local_ojguiak\Documents\Python>pyinstaller --windowed --onefile UI_Test_HelloWorld.py
    97 INFO: PyInstaller: 3.4
    97 INFO: Python: 3.7.2
    99 INFO: Platform: Windows-10-10.0.17134-SP0
    106 INFO: wrote c:\Users\local_ojguiak\Documents\Python\UI_Test_HelloWorld.spec
    110 INFO: UPX is not available.
    112 INFO: Extending PYTHONPATH with paths
    ['c:\\Users\\local_ojguiak\\Documents\\Python',
    'c:\\Users\\local_ojguiak\\Documents\\Python']
    112 INFO: checking Analysis
    147 INFO: checking PYZ
    165 INFO: checking PKG
    167 INFO: Building because toc changed
    167 INFO: Building PKG (CArchive) PKG-00.pkg
    377 WARNING: One binary added with two internal names.
    377 WARNING: ('libGLESv2.dll',
    'C:\\users\\local_ojguiak\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\PyQt5\\Qt\\bin\\libGLESv2.dll',
    'BINARY')
    379 WARNING: was placed previously at
    380 WARNING: ('PyQt5\\Qt\\bin\\libGLESv2.dll',
    'C:\\users\\local_ojguiak\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\PyQt5\\Qt\\bin\\libGLESv2.dll',
    'BINARY')
    9022 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
    9041 INFO: Bootloader c:\users\local_ojguiak\appdata\local\programs\python\python37-32\lib\site-packages\PyInstaller\bootloader\Windows-32bit\runw.exe
    9041 INFO: checking EXE
    9043 INFO: Rebuilding EXE-00.toc because UI_Test_HelloWorld.exe missing
    9044 INFO: Building EXE from EXE-00.toc
    9045 INFO: Appending archive to EXE c:\Users\local_ojguiak\Documents\Python\dist\UI_Test_HelloWorld.exe
    9107 INFO: Building EXE from EXE-00.toc completed successfully.