programing

JWT: 'module' 개체에 'encode' 특성이 없습니다.

bestprogram 2023. 8. 30. 21:52

JWT: 'module' 개체에 'encode' 특성이 없습니다.

를 사용할 때 Module not found 오류가 발생합니다.제가 선언한 방법은 다음과 같습니다.

def create_jwt_token():
    payload = {
        "iat": int(time.time())
    }

    shared_key = REST_API_TOKEN
    payload['email'] = EMAIL
    payload['password'] = PASSWORD

    jwt_string = jwt.encode(payload, shared_key)
    encoded_jwt = urllib.quote_plus(jwt_string)  # URL encode the JWT string

    return encoded_jwt

인코딩을 찾을 수 없다는 오류 메시지가 표시됩니다.jwt에 대해 조사했습니다.jwt그리고 인코딩이 내부의 방법이라는 것을 발견했습니다.jwt.JWT로 바꾸려고 했습니다.

jwt_string = jwt.JWT.encode(payload, shared_key)

다음과 같은 오류가 발생합니다.

바인딩되지 않은 메서드 encode()는 JWT 인스턴스를 첫 번째 인수로 사용하여 호출해야 합니다(대신 dict 인스턴스를 받았습니다).

내가 뭘 잘못하고 있는 거지?다음은 내 Python 환경의 버전 정보입니다.

2.7.10 | 아나콘다 2.3.0(64비트) | (기본값, 2015년 5월 28일, 16:44:52) [MSC v.1500 64비트(AMD64)]

JWT와 PyJ를 모두 가지고 있다면 문제가 발생합니다.WT가 설치되었습니다.할 때import jwtPyJ가 아닌 JWT 라이브러리를 가져오고 있습니다.WT - 후자가 인코딩을 원하는 것입니다.했다pip uninstall JWT그리고.pip uninstall PyJWT그 후에pip install PyJWT그 후 올바른 모듈을 가져와서 토큰을 생성했습니다! :)

제가 jwt.jwt.jwt.jwt라고 불러왔던 스크립트를 'jwt.py '이라고 이름 지었기 때문에 저도 같은 문제에 직면하고 있었습니다.따라서 스크립트의 이름을 지정할 때는 주의해야 합니다.라이브러리 이름을 사용하지 마십시오.

저는 이 문제를 해결했고 @josua의 답변이 맞습니다. 자세한 답변을 드리겠습니다.저의 경우, pyJwt는 이미 설치되어 있었습니다.나는 getream 클라이언트를 사용하고 있었습니다.

그리고 나서 저는 jwt 패키지를 사용하여 jwt를 설치하려고 했습니다.

그리고 JWT와 관련된 알려진 이슈입니다.

그래서 실제 문제는 요시다의 말을 인용한 것입니다.

유감스럽게도, 아닙니다.현재 두 라이브러리는 동일한 jwt 모듈 네임스페이스를 사용하고 있으며 Python의 모듈 시스템은 가져오기 jwt를 결정적으로 확인할 수 없습니다.

그래서 저는 제 pip freeze를 확인하고 jwt가 설치되어 있는지 확인했고 다음 명령을 사용하여 이 문제를 해결했습니다.

pip uninstall jwt==1.0.0
pip uninstall PyJWT
pip install PyJWT

그리고 이제 내 코드는:

encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')

잘 작동합니다.

저 같은 경우에는, 그저

pip install pyjwt

PyJ를 사용할 수 있습니다.WT 패키지, 위치jwt.encode()잘 작동합니다(초기화 또는 다른 종류의 작업이 필요 없음).

대신 PyJWT를 사용합니다.jwt에서 같은 문제가 발생하여 제거하고 PyJ를 사용했습니다.대신 WT.

PyJ 설치(재설치)와는 별도로다른 답변에서 이미 언급한 pip을 통한 WT 의존성은 다음 파일이 현재 디렉터리에 없는지 확인합니다(예:pwd) 당신은 출마할 것입니다.python 당신의 는당신의에서..py스크립트:

jwt.py
token.py

이것은 나에게 효과가 있었습니다.

pip install djangorestframework-jwt==1.11.0

이것은 저에게 효과가 있었습니다.

pip uninstall Flask-JWT && pip install Flask-JWT

몇 가지 해결 방법을 시도한 후 동일한 코드를 가진 새로운 Python 노트북을 만들었고 작동하는 것으로 보입니다.전에 어떤 문제가 있었는지 잘 모르겠습니다.

저의 경우에는, 제가 설치를 제거했습니다.jwt그리고.pyjwt 설치합니다.pyjwt최신 버전으로.하지만, 그것은 저에게 해결책이 아니었습니다.@John Hanley의 대답에 따르면, 이것은 효과가 있었습니다.MacOS.있습니다Windows 11 Home.

다 한 후jwt그리고.pyjwt 설치pyjwt@Sayan Bis가 언급된 것처럼 특정 버전으로 작동합니다.

아래 명령을 실행한 후 문제가 해결되었습니다.

pip install PyJWT==1.6.4

언급URL : https://stackoverflow.com/questions/33198428/jwt-module-object-has-no-attribute-encode