Python 스크립트를 EXE 파일로 만드는 py2exe 사용법에 대해 포스팅 합니다.
공식 튜토리얼 : http://www.py2exe.org/index.cgi/Tutorial
먼저 py2exe 모듈을 다운로드 합니다.
py2exe 공식 사이트 : http://www.py2exe.org
다운로드 링크에서 자신의 Python 버젼에 맞는 파일을 다운로드 하여 설치하도록 합니다. 설치가 끝났다면 이제 실습을 해보도록 하겠습니다.
먼저 폴더를 하나 만든 후 해당 폴더안에 EXE로 만들고자 하는 Python 스크립트 파일을 복사해 놓습니다.
그리고 아래와 스크립트를 하나 작성합니다. 여기서는 exe.py 라는 이름으로 하도록 하겠습니다.
# 파일명 : exe.py
from distutils.core import setup
import py2exe
setup(console=['EXE로 만들 파일명.py'])
그럼 폴더에 exe.py 와 EXE로 만들고자 하는 스크립트 파일이 두개 있을 것입니다. 이제 아래와 같이 입력을 합니다.
exe.py py2exe
무언가 주르르르르륵 지나간 후 dist 와 build 폴더가 생성 될 것입니다. dist 폴더를 확인해보면 EXE로 만들어진 파일이 있는것을 확인하실 수 있을 것입니다.
하지만 이렇게 할 경우 파일이 다수 생성되게 됩니다. 불필요한 파일이나 옵션을 줘서 단일 파일로 생성도 가능합니다.
http://www.py2exe.org/index.cgi/ListOfOptions
unbuffered : 만약 true로 설정하면 표준입출력에서 버퍼를 사용하지 않는 실행 파일을 생성하게 됩니다.
optimize : 코드를 최적화 합니다. 0=최적화 안함 , 1=일반적 최적화, 2=추가 최적화
include : 포함할 모듈의 이름을 리스트 형태로 지정합니다.
packages : 단일 모듈이 아닌 패키지 이름을 리스트 형태로 지정합니다. 여기에 명시된 패키지는 통상 서브 패키지까지 포함합니다.
ignore : 패키지나 모듈을 찾다가 없으면 무시할 모듈을 명시합니다.
exclude : 제외할 모듈을 명시합니다.
dll_exclude : 제외할 DLL 파일을 명시합니다.
dist_dir : 최종 바이너리를 생성할 경로를 지정합니다. 기본적으로는 setup.py 파일이 실행되는 디렉토리에 dist 디렉토리를 생성하게 됩니다.
compressed : 압축된 zip 파일을 생성할 것인지 여부를 지정합니다. 불리언 값입니다.
xref : 불리언 값입니다. 교차 참조를 보여줄 것인지 여부를 지정합니다.
bundle_files : 번들링 여부를 결정합니다. 3=번들링하지 않음(디폴트), 2=기본번들링(파이썬 인터프리터를 포함하지 않음), 1=파이썬 인터프리터까지 번들링
skip_archive : 파이썬 바이트 코드 파일을 번들에 포함하지 않고 파일시스템에 직접 생성합니다.
ascii : (불리언) encodings, codec 패키지를 포함하지 않습니다.
custom_boot_script : 실행환경 세팅 후 실행할 파이썬 코드를 명시합니다.
코멘트로 uptx님이 알려주신 코드를 조금 수정하여 첨부하오니 참고하시기 바랍니다.
#!c:\python27\python.exe
from distutils.core import setup
import py2exe
excludes = ['pywin', 'pywin.debugger', 'pywin.debugger.dbgcon', 'pywin.dialogs', 'pywin.dialogs.list', 'win32com.server']
options = {
'bundle_files': 1, # create singlefile exe
'compressed': 1, # compress the library archive
'excludes': excludes,
'dll_excludes': ['w9xpopen.exe'] # we don't need this, 윈도우가 있는 프로그램은 필요
}
setup(
options = {'py2exe': options},
zipfile = None, # append zip-archive to the executable.
console = ['run.py']
)
끝으로 패키징한 파일이 정상적으로 실행이 안되는 경우가 있다. 이는 "Microsoft Visual C++ 2008 Redistributable Package" 가 설치되어 있지 않은 시스템에서 나는 문제이다.
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=29