반원 블로그

7. pyisntaller - 파이썬 파일을 실행파일로 변환(py to exe) 본문

2018~/Python Skill Up

7. pyisntaller - 파이썬 파일을 실행파일로 변환(py to exe)

반원_SemiCircle 2019. 9. 6. 10:27

개요

파이썬 파일로 개발한 것을 실행파일로 만들어준다.
GitHub
레퍼런스 문서
홈페이지

설치

pip3 install pyinstaller

주의사항

윈도우 사용 환경 : Windows XP or newer
맥 사용 환경 : Mac OS X 10.7 (Lion) or newer

기본사용방법

참고

pyinstaller myscript.py #기본 사용. 여러 폴더들과 파일로 나눠짐
pyinstaller --onefile --windowed myscript.py #옵션 추가. GUI형태로 출력되는 하나의 실행파일로 생성

옵션표

참고
주요 옵션

-D, --onedir : 실행 파일이 포함 된 하나의 폴더 번들(묶음)을 만들기 (디폴트 세팅)
-F, --onefile : 단일 파일 번들 실행 파일을 생성.

-n NAME, --name NAME : 생성할 때의 이름. 기본으로는 파이썬 파일 이름이 세팅됨
--hidden-import MODULENAME, --hiddenimport MODULENAME : 코드에서 직접적으로 보이지 않는(즉 import한) 모듈 이름을 지정한다. 특히 tkinter나 pyqt5같은 모듈은 필수

-c, --console, --nowindowed :  콘솔 창(terminal) 형태로 실행되는 파일 생성할 때의 옵션. 도스창을 사용함
-w, --windowed, --noconsole : 콘솔 창(terminal) 없는 GUI프로그램 생성할 때의 옵션. 도스창을 열지 않음

--strip : exe 라이브러리들을 Strip 로 실행
--upx : UPX 를 설치한 경우 실행파일 압축
--out -o DIR : 해당 경로에 파일 생성
--paths -p DIR : 해당 경로의 path 사용
--icon 파일명 : 아이콘 선택

--hidden-import 옵션의 경우는 다음 링크를 참조하면 좋다. 링크

아이콘 이미지는 .ico 파일로 만들어야하며, 크기도 규정이 있으니 다음 사이트를 이용 (링크)[https://icoconvert.com]

발생할 수 잇는 이슈

  1. 아래와 유사한 에러 발생시 pip unistall enum34 을 작성 참고 링크
Using python36+pyqt5 development, there are multiple files, a master file, and pyinstaller3.3.1 package.
Package command pyinstaller -F filename file name file name
Wrong RecursionError: maximum recursion depth exceeded
The solution adds import sys sys.setrecursionlimit (5000) in the generated.Spec file.
Generating the EXE file
Click on EXE file times wrong Fatal Error! Failed to execute script

Update pyinstaller:>pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
Pack
Report errors:
File "f:\anaconda\lib\site-packages\PyInstaller\hooks\pre_safe_import_module\hook-setuptools.extern.six.moves.py", line 34, in pre_safe_import_module
for real_module_name, six_module_name in real_to_six_module_name.items():
AttributeError: 'str' object has no attribute 'items'
```

다중 운영체제를 지원하는 파일을 만들어야하는 경우

링크

Comments