본문 바로가기

프로그래밍/Python

[Python] cmd 에서 python 인터프리터 진입시 UnicodeDecodeError

아나콘다 프롬프트에서 python 을 입력하여, 파이썬 인터프리터로 진입하려 하였을 때, 아래와 같은 UnicodeDecodeError 가 발생했다. 인터프리터 진입시마다 에러 메시지가 발생하여 꺼림직해서, 검색을 해서 해결책을 찾아봤다.

에러메시지를 보면, read_history_file 함수 안에서 파일을 open 하는 부분에서 에러가 발생하는 것이었다. 스택오버플로우의 한 질문답변에서 원인을 찾았다.

%USERPROFILE%/.python_history ( C:\Users\username\.python_history ) 파일(윈도우 환경임. 다른 운영체제는 위치가 다를 것.)에 파이썬 인터프리터 명령이 저장되어 있는데, 이 파일에 한글등이 포함되어 있으면, 파일을 읽는 과정에서 UnicodeDecodeError 가 발생하는 것이다.

따라서, 간단한 해결책은 .python_history 파일을 지워버리는 것이다. 이전에 입력했던 히스토리가 필요하다면, open에 인코딩옵션을 주도록 수동으로 수정해서 사용하면 될 것 같다.

Python 3.6.8 |Anaconda, Inc.| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Failed calling sys.__interactivehook__
Traceback (most recent call last):
  File "C:\PROGRAMS\Anaconda3\envs\ta3\lib\site.py", line 410, in register_readline
    readline.read_history_file(history)
  File "C:\PROGRAMS\Anaconda3\envs\ta3\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file
    self.mode._history.read_history_file(filename)
  File "C:\PROGRAMS\Anaconda3\envs\ta3\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_file
    for line in open(filename, 'r'):
UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 58: illegal multibyte sequence