PyJWT 버전 오류 해결

백종석·2022년 5월 10일
1

Error note

목록 보기
2/4
post-thumbnail

회원가입 후 로그인 하는 과정에서 AttributeError: 'str' object has no attribute 'decode'라는 PyJWT오류가 발생했는데, 찾아보니 PyJWT 라이브러리가 업데이트를 하면서 코드가 작동하지 않아 발생하는 오류라고 한다


그래서 해결방법은?

PyJWT의 버전을 낮춰주면 해결 가능한데, 나는 버전을 1.7.1로 낮춰서 패키지를 재설치 해주었다

python 라이브러리를 재설치하는 법은

윈도우 기준으로

  1. python interpreter 화면에서 PyJWT 라이브러리 이름 클릭 > 하단 마이너스 (-) 버튼 클릭해서 라이브러리를 제거한다.
  2. 제거가 된 후에 다시 플러스 (+) 버튼 클릭한 후 검색창에 pyjwt를 검색하고, 버전을 1.7.1로 선택한 후 설치(Install Package)한다.

에러 설명
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256').decode('utf-8')

기존 버전에서는 jwt.encode()함수의 리턴값이 '바이트 문자열'이라는 자료형이었기 때문에 뒤에 .decode('utf-8')를 붙여 일반 문자열로 바꾸어주었는데, 2.0.0 버전부터는 이 함수의 리턴값이 일반 문자열이기 때문에 여기에 또 .decode('utf-8')를 붙여주게 되면 문자열에는 이런 메소드가 없으므로 에러가 나게 된다. (101100100110 같은 바이트 자료를 문자열로 바꾸는 것이 decode이므로 당연히 문자열에는 이런 기능이 필요없다.)

profile
항해중인 우당탕탕 코린이

0개의 댓글