프로그래밍/파이썬 공부

ultralytics 패키지를 pyinstaller로 설치파일 만들 때 AttributeError: 'NoneType' object has no attribute 'encoding' 오류 발생, 해결

이자다 2024. 2. 1. 12:53
반응형

https://github.com/ultralytics/ultralytics/issues/7393

 

Error compiling python scripts to executable file · Issue #7393 · ultralytics/ultralytics

Search before asking I have searched the YOLOv8 issues and found no similar bug report. YOLOv8 Component Other Bug I am having a problem when compiling python scripts (main.py) to executable. I tra...

github.com

 

ultralytics 패키지가 포함된 파일을 pyinstaller로 설치파일로 만들 때  AttributeError: 'NoneType' object has no attribute 'encoding' 라는 에러 메시지가 나와서 해당 이슈에 대해 알아보았다.

 

다행히 최근에 이에 관한 이슈가 논의된 적 있어서 해결법은 빠르게 찾을 수 있었다.

 

위 링크에 보면 사용자들이 공유한 방법 중에 두가지가 효과가 있다고 하고 실제로 나는 효과를 보고 정상적으로 pyinstaller 실행을 마쳤다.

 

 

1. pyinstaller 실행 시 -D 옵션으로 디렉토리 형태로 파일을 생성하면 ultralytics 패키지 폴더에 default.yaml 파일이 사라져 있는데 이 파일을 제자리에 붙여넣는다.

 

 

2. ultralytics/utils/__init__.py의 233번째 줄에

sys. stdout=open ('output. txt', 'w', encoding='utf-8 ')

해당 코드를 삽입한다.

 

 

위 방법대로 했더니 정상적으로 실행이 되었다.

 

원인은 pyinstaller의 후크에 ultralytics가 빠져있어서 1번이 해결법이 되었고, 추가로 터미널 환경이 아닌 실행파일에서 ultralytics의 코드가 오류가 발생하는데 2번 해결법이 이를 해결할 수 있다고 한다.

반응형