[Python] 실행 파일 만들기
Python을 사용하면서 큰 단점이 몇 가지나 있는데 그 중 하나는 스크립트 언어이기 때문에 배포가 불편하다는 것이다.
이것을 임시로 exe 파일로 만들어 받는 쪽에서 python 이나 라이브러리가 없어도 사용 가능하도록 할 수 있다.
여러 방법들 중 많이 알려진 pyinstaller를 사용하면 된다.
pip install pyinstaller
pyinstaller -w -F NAME.py
-w 는 console 없이 실행
-F 는 패키지 합쳐서 하나의 파일로 만들기
여러가지 라이브러리를 사용하면 좀 더 세밀한 설정이 필요하게 되는데 이때 사용하게 되는 파일이 .spec 파일이다.
# -*- mode: python ; coding: utf-8 -*-
import sys ; sys.setrecursionlimit(sys.getrecursionlimit() * 5)
block_cipher = None
a = Analysis(
['burndori.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports = [
'skimage',
'skimage.io',
'skimage.filters',
'skimage.filters.rank',
'skimage.filters.rank.core_cy',
'skimage.measure',
'skimage.color',
'skimage.draw',
'skimage.transform',
'skimage.util',
'skimage.util.dtype',
'skimage._shared',
'skimage._shared.geometry',
'skimage.feature',
'skimage.morphology',
'skimage.restoration',
'skimage.segmentation',
'skimage.viewer',
'skimage.viewer.qt',
'skimage.viewer.core',
'skimage.viewer.plugins',
'skimage.viewer.utils',
'skimage.viewer.widgets',
'skimage.data._fetchers',
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='burndori',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False,
onefile=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
합성할 때 재귀 제한으로 에러가 난다면 아래 코드 추가
import sys ; sys.setrecursionlimit(sys.getrecursionlimit() * 5)
import 가 잘 안되는 라이브러리의 경우에는 아래 코드 추가
hiddenimports ~~~
기타 여러 세밀한 설정들 필요할 때 추가 또는 삭제 하면 된다.
끝. :)
도움이 되셨다면 더 좋은 정보 공유를 위해 광고 클릭 부탁 드립니다 :)
0 댓글