인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박찬진님의 프로필 이미지
박찬진

작성한 질문수

파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편

프로젝트 생성 및 ASGI 개발서버 구동

[해결됨] 6:00 마지막 pip install -r requirements.txt 오류

해결된 질문

작성

·

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가 발생한 것입니다.

오류로 불편을 끼쳐드려 죄송하고, 제보해주신 내용을 강의 노트에도 추가해두었습니다.

감사합니다. :-)

이진석님의 프로필 이미지
이진석
지식공유자

방금 강의 영상에도 인코딩에 대한 추가 설명을 추가하고, 다운받으시는 강의자료에도 해당 슬라이드를 수정하여 재업로드해두었습니다.

image

감사합니다.

박찬진님의 프로필 이미지
박찬진

작성한 질문수

질문하기