.py 를 .exe로 변환하려고 아래와 같은 명령을 넣었더니
PS C:\Users\M\PycharmProjects\pythonProject> pyinstaller ExceltoDbc.py
다음과 같이 출력되면서 오류가 뜸
345 INFO: PyInstaller: 4.7 345 INFO: Python: 3.10.0
843 INFO: UPX is not available.
2460 INFO: Building Analysis because Analysis-00.toc is non existent
12821 INFO: Processing pre-find module path hook distutils from 'c:\\users\\m\\pycharmprojects\\pythonproject\\venv\\lib\\site-packages\\PyInstaller\\hooks\\pre_find_module_path\\hook-distutils.py'. 12834 INFO: distutils: retargeting to non-venv dir 'C:\\Users\\M\\AppData\\Local\\Programs\\Python\\Python310\\lib'
20207 INFO: Processing pre-find module path hook site from 'c:\\users\\m\\pycharmprojects\\pythonproject\\venv\\lib\\site-packages\\PyInstaller\\hooks\\pre_find_module_path\\hook-site.py'. 20211 INFO: site: retargeting to fake-dir 'c:\\users\\m\\pycharmprojects\\pythonproject\\venv\\lib\\site-packages\\PyInstaller\\fake-modules'
IndexError: tuple index out of range
검색해보니 python 3.10 버젼에서 나오는 버그 같은데 해결책을 찾음
[해결 방법]
Python 검색 -> 파일 위치 열기 -> python 바로가기 우클릭해서 파일 위치 열기
-> python310 설치 폴더 ->Lib -> dis.py 실행 (PyCharm 이건 Visual Studio건 등등 코드 열 수 있으면 된다. )
_unpack_opargs 함수를 찾아서
else: 항에
'extended_arg=0' 를 추가 해준다.
def _unpack_opargs(code):
extended_arg = 0
for i in range(0, len(code), 2):
op = code[i]
if op >= HAVE_ARGUMENT:
arg = code[i+1] | extended_arg
extended_arg = (arg << 8) if op == EXTENDED_ARG else 0
else:
arg = None
extended_arg=0
yield (i, op, arg)
다시 변환해보니 잘 된다.
해결!