티스토리 뷰

반응형

Traceback (most recent call last): File "python\mirae_ceiling_ver01.py", line 76, in <module> UnicodeEncodeError: 'locale' codec can't encode character '\ub144' in position 2: encoding error [18480] Failed to execute script 'mirae_ceiling_ver01' due to unhandled exception!

pyinstaller --add-data "data;data" --add-data "excel;excel" --add-data "dimstyle;dimstyle" --noconfirm mirae_ceiling_ver01.py

컴파일에서 자료를 만들었는데...

결국 날짜를 만드는 부분에서 문제가 있었다.

한시간 넘게 이 오류가 시름했네요~

쳇gpt로 문의하니.. 이런답변...


해결 방법컴파일러 설정 검토: 사용 중인 컴파일러의 문서를 확인하여, 필요한 모든 옵션과 설정이 제대로 적용되었는지 확인합니다.인코딩 설정 명시: 스크립트 내에서 파일을 열 때 명시적으로 인코딩을 지정해보세요. 예를 들어, open(file, encoding='utf-8')과 같이 사용합니다.로케일 설정 확인: 실행 파일을 실행하는 시스템의 로케일 설정이 UTF-8을 지원하는지 확인합니다.디버깅 정보 활용: PyInstaller와 같은 컴파일러는 종종 로그나 디버깅 정보를 제공합니다. 이 정보를 사용하여 문제의 원인을 찾습니다.의존성 포함 검토: 컴파일러가 모든 필요한 의존성(라이브러리, 파일 등)을 포함하고 있는지 확인합니다.문제의 정확한 원인을 파악하기 위해서는 실행 파일이 생성되는 환경과 VSCode에서의 실행 환경을 비교 분석해야 할 필요가 있습니다.

개념은 이해가 되었는데, 여전히 해결을 못하고..

하나하나 살펴보며 찾아봤습니다.

결국 아래의 코드에서 문제가 일어나서 다른 방법으로 날짜를 표현해서 해결했네요.

User
# datetime 객체를 문자열로 변환
drawdate_str = drawdate.strftime("%Y년 %m월 %d일")  # 예: "2024-02-27"의 형식으로 변환
drawdate_str_short = drawdate.strftime("%m/%d")  # 예: "02-27"의 형식으로 변환
try:
    deadlinedate_str = deadlinedate.strftime("%Y년 %m월 %d일")  # 예: "2024-02-27"의 형식으로 변환
    deadlinedate_str_short = deadlinedate.strftime("%m/%d")  # 예: "02-27"의 형식으로 변환

 

날짜를 다른 방식으로 표현해서 해결함.

drawdate_str = "{0}년 {1:02d}월 {2:02d}일".format(drawdate.year, drawdate.month, drawdate.day)
drawdate_str_short = "{0:02d}/{1:02d}".format(drawdate.month, drawdate.day)

try:
    deadlinedate_str = "{0}년 {1:02d}월 {2:02d}일".format(deadlinedate.year, deadlinedate.month, deadlinedate.day)
    deadlinedate_str_short = "{0:02d}/{1:02d}".format(deadlinedate.month, deadlinedate.day)
except AttributeError:
    print("deadlinedate is not a valid datetime object")

 

이렇게 하고 실행하니...

오류없이 잘되네요~

utf-8문제라고 계속 그것만 생각하고 찾으니, 결과를 찾는데 애를 먹었습니다.

하나하나 차근차근 살펴보니...

 

그리고 그 구석을 질문해서 찾아냈어요~

여러분 힘내요~

반응형
댓글