해결된 질문
작성
·
2.5K
·
수정됨
0
requirements.txt 토씨 하나 안틀리고 작성하고,
pip install -r requirements.txt를 하면
return data.decode(
UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 2: illegal multibyte sequence
오류가 떠서 검색 결과, 파일 읽을 때는 file_open = open("file path", 'r', encoding="UTF-8") 이렇게 하라는 글이 많았는데, 해당 f.read하는 라이브러리 찾아가서(req_file.py)
try:
with open(url, "rb", encoding="UTF-8") as f:
이렇게 바꿔주고 실행해도 에러 나오구요(ValueError: binary mode doesn't take an encoding argument)...
어디서는 또
pip install pygetwindow==0.0.1
하고 다시 해보면 되었다는 글이 있어서 해보았는데도 안되네요 ㅠㅠ
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
앜ㅋㅋㅋ
https://www.inflearn.com/questions/180989/pip-install-r-requirements-txt-%EC%98%A4%EB%A5%98
여기 말대로 주석은 지우고 실행해보니까 됩니다!!!
그런데 궁금한 점) 왜 강사님 컴퓨터에선 되고 내 컴퓨터에서는 안되는지... 올해 새로 산 노트북인데 ㅠㅠ
답변 1
1
안녕하세요.
이는 requirements.txt 파일 내에 한글이 있는 데, 한글 윈도우의 python에서는 텍스트 파일의 디폴트 인코딩을 cp949로 디코딩하는 데, 원본 파일은 utf8이기에 인코딩이 맞지 않아 발생하는 오류입니다.
그래서 파이썬에서는 한글 텍스트 파일을 열고 쓸 때에는 open("경로", "rt", encoding="utf8") 과 같이 encoding을 꼭 지정하기를 추천하는 편입니다.
이 오류를 해결하기 위해, requirements.txt 파일 내의 한글을 모두 제거하셔도 되지만, 한글을 사용하기 위해 requirements.txt 파일의 첫 줄에 아래 줄을 추가하시면, pip 내에서 requirements.txt 파일을 utf8로 인지하여 디코딩하게 됩니다. // pip 코드의 auto_decode 함수 코드를 살펴보고, 저도 방금 알게된 인코딩 지정방법입니다.
# coding: utf-8
그러면 한글 윈도우에서도 requirements.txt 파일에 한글 주석이 포함되어있더라도, 설치가 잘 될 것입니다.
맥이나 리눅스는 디폴트 인코딩이 utf8이기 때문에, # coding: utf-8을 넣지 않으셔도 무방합니다.
그리고, open 시에 encoding 옵션을 쓰실려면 file mode가 text 여야 합니다. 그런데 rb가 지정되어있고 b가 binary모드를 의미하므로 이때에는 encoding 옵션을 지정해서는 안 됩니다. 그래서 ValueError가 발생한 것입니다.
오류로 불편을 끼쳐드려 죄송하고, 제보해주신 내용을 강의 노트에도 추가해두었습니다.
감사합니다. :-)
방금 강의 영상에도 인코딩에 대한 추가 설명을 추가하고, 다운받으시는 강의자료에도 해당 슬라이드를 수정하여 재업로드해두었습니다.
감사합니다.