DoITgrow

[오류 해결] pip install <패키지> 설치 시 "UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 2082: illegal multibyte sequence" 에러가 발생하는 경우 본문

프로그래밍

[오류 해결] pip install <패키지> 설치 시 "UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 2082: illegal multibyte sequence" 에러가 발생하는 경우

김수성 (Kim SuSung) 2021. 11. 22. 20:29
반응형

해당 오류는 pip 명령어로 패키지를 설치하거나 tar.gz, whl 파일로 패키지를 직접 설치할 때 압축 파일 안에 있는 setup.py 파일을 자동으로 실행하는데 여기에 포함되어 있는 코드 중 txt 파일과 같은 것을 읽을 때 디코딩이 제대로 되지 않아서 발생하는 문제이다.

 

위 문제를 해결하기 위해서는 tar.gz 파일을 받은 후 압축을 해제하여 설치하는 방법을 이용해야 한다. 압축을 해제하면 해당 폴더에는 setup.py 파일이 있을 것이다. 여기 위치에서 cmd 또는 shell을 열어서 직접 python setup.py install 명령어를 실행하여 설치해야 한다. 

 

명령어를 실행하기 전에 1가지 미리 작업해 주어야 할 것이 있는데 setup.py를 메모장이나 기타 편집기로 열어서 안에 내용을 일부 수정해 주어야 한다.

 

일단 패키지별로 일부 변수명이나 내용이 조금 다를 수 있는데 핵심은 파일을 객체로 열 때, 인코딩이 어떤 방식인지를 찾아보는 것이다. 바로 아래와 같이 파일을 열 때, 아무 인코딩도 되어 있지 않다면, 

with open('README.rst') as readme_file:
    readme = readme_file.read()

아래와 같이 인코딩을 추가해주고 파일을 저장해주면 된다.

with open('README.rst', 'r' ,encoding='utf-8') as readme_file:
    readme = readme_file.read()

다시 위로 돌아가 python setup.py install을 실행하여 파일을 설치하면 오류가 해결된다.

반응형
Comments