<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Pyinstaller</id>
	<title>Pyinstaller - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Pyinstaller"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Pyinstaller&amp;action=history"/>
	<updated>2026-05-19T08:14:11Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Pyinstaller&amp;diff=14&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: == 파이썬을 exe 파일로 배포 하기 ==  === 실행 옵션 === ==== 일반적인 옵션 ==== --distpath DIR : bundled app을 저장할 경로 (디폴트 : ./dist)  --workpath WORKPATH : temporary 작업 파일을 저장할 곳 (디폴트 : ./build)  --noconfirm : output 경로를 물어보지 않고 지정 (디폴트 : SPECPATH/dist/SPECNAME)  --clean : 빌드하기 전에 캐시와 temp 파일들 제거  --log-level LEVEL : 빌드할 때, console에 프린트될 메시...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Pyinstaller&amp;diff=14&amp;oldid=prev"/>
		<updated>2024-10-04T14:08:46Z</updated>

		<summary type="html">&lt;p&gt;새 문서: == 파이썬을 exe 파일로 배포 하기 ==  === 실행 옵션 === ==== 일반적인 옵션 ==== --distpath DIR : bundled app을 저장할 경로 (디폴트 : ./dist)  --workpath WORKPATH : temporary 작업 파일을 저장할 곳 (디폴트 : ./build)  --noconfirm : output 경로를 물어보지 않고 지정 (디폴트 : SPECPATH/dist/SPECNAME)  --clean : 빌드하기 전에 캐시와 temp 파일들 제거  --log-level LEVEL : 빌드할 때, console에 프린트될 메시...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 파이썬을 exe 파일로 배포 하기 ==&lt;br /&gt;
&lt;br /&gt;
=== 실행 옵션 ===&lt;br /&gt;
==== 일반적인 옵션 ====&lt;br /&gt;
--distpath DIR : bundled app을 저장할 경로 (디폴트 : ./dist)&lt;br /&gt;
&lt;br /&gt;
--workpath WORKPATH : temporary 작업 파일을 저장할 곳 (디폴트 : ./build)&lt;br /&gt;
&lt;br /&gt;
--noconfirm : output 경로를 물어보지 않고 지정 (디폴트 : SPECPATH/dist/SPECNAME)&lt;br /&gt;
&lt;br /&gt;
--clean : 빌드하기 전에 캐시와 temp 파일들 제거&lt;br /&gt;
&lt;br /&gt;
--log-level LEVEL : 빌드할 때, console에 프린트될 메시지 디테일 정도 (LEVEL은 TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL 중에 하나가 될 수 있으며, 디폴트는 INFO이다)&lt;br /&gt;
&lt;br /&gt;
==== 산출물 관련 옵션 ====&lt;br /&gt;
--onedir : 하나의 folder bundle로 생성 (default)&lt;br /&gt;
&lt;br /&gt;
--onefile : 하나의 실행 파일로 생성&lt;br /&gt;
&lt;br /&gt;
==== 묶을 파일들에 대한 옵션 ====&lt;br /&gt;
--add-data &amp;lt;SRC;DEST or SRC:DEST&amp;gt; : executable 파일 외 더 추가되어야 할 non-binary 파일이나 폴더. 구분자는 윈도우에서는 ;로 사용하고, unix 계열 시스템에서는 :를 사용한다. 이 옵션은 여러번 사용 가능하다.cf. 이미지.png 등 포함 가능&lt;br /&gt;
&lt;br /&gt;
--add-binary &amp;lt;SRC;DEST or SRC:DEST&amp;gt; : executable 파일 외 더 추가되어야 할 binary 파일. 여러번 사용 가능&lt;br /&gt;
&lt;br /&gt;
--paths DIR : imports를 위해 탐색줘야 할 경로 설정. &amp;#039;:&amp;#039;로 구분하여 여러 path 설정 가능&lt;br /&gt;
&lt;br /&gt;
--hidden-import MODULENAME : 스크립트 속 코드에 나와 있지 않은 import 명시&lt;br /&gt;
&lt;br /&gt;
==== 생성 방식에 대한 옵션 ====&lt;br /&gt;
--debug &amp;lt;all, imports, bootloader, noarchive&amp;gt; : frozen application의 디버깅을 제공해줌&lt;br /&gt;
&lt;br /&gt;
==== 윈도우 관련 옵션 ====&lt;br /&gt;
--nowindowed : 입출력을 위해 console 창을 연다 (default)&lt;br /&gt;
&lt;br /&gt;
--noconsole : 입출력을 위한 console 창이 만들어지지 않음&lt;br /&gt;
&lt;br /&gt;
== pyinstaller parameter ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=shell&amp;gt;&lt;br /&gt;
usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]&lt;br /&gt;
                   [--add-data &amp;lt;SRC;DEST or SRC:DEST&amp;gt;]&lt;br /&gt;
                   [--add-binary &amp;lt;SRC;DEST or SRC:DEST&amp;gt;] [-p DIR]&lt;br /&gt;
                   [--hidden-import MODULENAME]&lt;br /&gt;
                   [--additional-hooks-dir HOOKSPATH]&lt;br /&gt;
                   [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]&lt;br /&gt;
                   [--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]&lt;br /&gt;
                   [--noupx] [--upx-exclude FILE] [-c] [-w]&lt;br /&gt;
                   [-i &amp;lt;FILE.ico or FILE.exe,ID or FILE.icns&amp;gt;]&lt;br /&gt;
                   [--version-file FILE] [-m &amp;lt;FILE or XML&amp;gt;] [-r RESOURCE]&lt;br /&gt;
                   [--uac-admin] [--uac-uiaccess] [--win-private-assemblies]&lt;br /&gt;
                   [--win-no-prefer-redirects]&lt;br /&gt;
                   [--osx-bundle-identifier BUNDLE_IDENTIFIER]&lt;br /&gt;
                   [--runtime-tmpdir PATH] [--bootloader-ignore-signals]&lt;br /&gt;
                   [--distpath DIR] [--workpath WORKPATH] [-y]&lt;br /&gt;
                   [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]&lt;br /&gt;
                   scriptname [scriptname ...]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1개 EXE파일에 묶어서 배포 하기 ===&lt;br /&gt;
&lt;br /&gt;
   옵션 : -F &lt;br /&gt;
   (압축 방식으로 묶이기 때문에 실행 시 압축을 푸는 딜레이가 미세하게 발생한다.)&lt;br /&gt;
&amp;lt;source lang=shell&amp;gt;&lt;br /&gt;
 ex) pyinstaller.exe -F sample.py&lt;br /&gt;
     pyinstaller.exe -F --onefile sample.py&lt;br /&gt;
   sample.py 라는 파일이 sample.exe 파일 하나로 묶이게 된다.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exe 파일 실행 시 콘솔(도스창) 화면을 나타나지 않게 처리 ===&lt;br /&gt;
&lt;br /&gt;
총 세 가지 방법이 있는데 한 가지만 사용&lt;br /&gt;
&amp;lt;source lang=shell&amp;gt;&lt;br /&gt;
 ex) pyinstaller.exe --noconsole --onefile sample.py&lt;br /&gt;
 ex) pyinstaller.exe -w sample.py&lt;br /&gt;
 ex) pyinstaller.exe --windowed sample.py&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 관리자 권한으로 실행 ===&lt;br /&gt;
&amp;lt;source lang=shell&amp;gt;&lt;br /&gt;
 ex) pyinstaller.exe --uac-admin sample.py&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
※ 해당 옵션은 exe 단일 파일로 묶는 -F 인자랑 같이 쓰면 적용 안됨&lt;br /&gt;
 -F를 사용하지 않으면 파일이 여러개로 쪼개어 생성되겠지만 정작 메인 exe 파일은 관리자 권한 요청이 기본으로 적용&lt;br /&gt;
&lt;br /&gt;
( 만약 빌드하고 싶은 파일이 x64 가 아닌 x86 이라면 굳이 pyinstaller 말고 py2exe 사용 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 빌드 파일에 아이콘을 적용하고 싶을 경우 ===&lt;br /&gt;
&amp;lt;source lang=shell&amp;gt;&lt;br /&gt;
 ex) pyinstaller.exe --icon=icons\icon.ico sample.py&lt;br /&gt;
 ex) pyinstaller.exe -i=icons\icon.ico sample.py&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
※ 위의 인자값은 icons 폴더 안에 있는 icon.ico 파일을 사용한다는 의미. &lt;br /&gt;
위 예제문의 경우 .py 파일과 같은 경로에 icons 폴더가 존재.(만약 완전 다른 경로라면 full path 적용).&lt;br /&gt;
&lt;br /&gt;
※ ico 파일 외에도 icon이 리소스에 적용되어 있는 exe 파일을 사용해도 된다.&lt;br /&gt;
   저렇게 하면 빌드된 exe 파일의 리소스 영역에 아이콘의 이미지 저장&lt;br /&gt;
== maximum recursion error 발생시 ==&lt;br /&gt;
&lt;br /&gt;
https://stackoverflow.com/questions/38977929/pyinstaller-creating-exe-runtimeerror-maximum-recursion-depth-exceeded-while-ca&lt;br /&gt;
&lt;br /&gt;
This worked for me&lt;br /&gt;
&lt;br /&gt;
Run pyinstaller and stop it to generate the spec file :&lt;br /&gt;
&lt;br /&gt;
pyinstaller filename.py&lt;br /&gt;
A file with .spec as extension should be generated&lt;br /&gt;
Now add the following lines to the beginning of the spec file :&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
sys.setrecursionlimit(5000)&lt;br /&gt;
Now run the spec file using :&lt;br /&gt;
&lt;br /&gt;
pyinstaller filename.spec&lt;br /&gt;
&lt;br /&gt;
== 파이참 import 자동 최적화 방법 ==&lt;br /&gt;
&lt;br /&gt;
https://www.jetbrains.com/pycharm/guide/tips/optimize-imports/&lt;br /&gt;
&lt;br /&gt;
[[category:python]]&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>