일모도원(日暮途遠) 개발자
[파이썬] exe만들때 필요한 파일 추가하기 본문
반응형
pyinstaller --onefile main.py
pyinstaller로 실행파일을 만드니 오류가 난다.
파이썬으로 실행하면 잘되는데. 디버깅 해보니 파이썬으로 실행할때는 이런씩으로 된 패키지를 가져온다.
imported_package.__path__: _NamespacePath(['C:\\Users\\ways1\\Documents\\dalpy\\OMRChecker\\src\\processors'])
exe로 실행보니 전혀 이상한곳의 경로에서 src/processor를 찾고 있어서 에러가 나고 있다.
imported_package.__path__: _NamespacePath(['C:\\Users\\ways1\\AppData\\Local\\Temp\\_MEI169042\\src\\processors'])
챗지피티에 물어보니 spec파일을 만들라고 한다.
pyi-makespec --onefile main.py
이러면 main.spec이라는 파일이 하나 생긴다. datas에 src/processor를 넣어준다. 그리고 exe하나만 만들려면 onefile=True, 를 추가해준다.
a = Analysis(
['main.py'],
pathex=[],
binaries=[],
datas=[('src/processors', 'src/processors')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
onefile=True,
)
spec파일을 만들고 나면 이제 "pyinstaller main.spec"로 실행하면 된다.
imported_package.__path__: _NamespacePath(['C:\\Users\\ways1\\AppData\\Local\\Temp\\_MEI41042\\src\\processors'])
반응형