web-dev-qa-db-fra.com

jwt: l'objet 'module' n'a pas d'attribut 'encode'

J'obtiens une erreur Module introuvable lors de l'utilisation de jwt. Voici comment je l'ai déclaré:

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

Le message d'erreur indique que l'encodage est introuvable dans jwt. J'ai fait un onglet sur jwt et j'ai trouvé que l'encodage est une méthode à l'intérieur de jwt.JWT. J'ai essayé de le changer en

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

et cela donne cette erreur:

la méthode non liée encode () doit être appelée avec l'instance JWT comme premier argument (obtenu l'instance dict à la place)

Qu'est-ce que je fais mal? Voici les informations de version de mon environnement python:

2.7.10 | Anaconda 2.3.0 (64 bits) | (par défaut, 28 mai 2015, 16:44:52) [MSC v.1500 64 bits (AMD64)]

40
Arvind Kandaswamy

Le problème se pose si JWT et PyJWT sont installés. En faisant import jwt il importe la bibliothèque JWT par opposition à PyJWT - ce dernier est celui que vous voulez pour l'encodage. J'ai fait pip uninstall JWT et pip uninstall PyJWT enfin pip install PyJWT. Après cela, il a importé le module correct et généré le jeton! :)

78
Joshua

Vous pouvez utiliser le package PyJWT , où jwt.encode() fonctionne très bien (pas besoin d'initialisation ou d'autres types de choses).

8
poxip

J'étais également confronté au même problème parce que j'avais nommé le script à partir duquel j'avais appelé jwt.encode () comme 'jwt.py'. Soyez donc prudent lorsque vous nommez des scripts. Essayez de ne pas utiliser de noms de bibliothèque.

3
Aarya

Utilisez plutôt PyJWT . J'ai rencontré le même problème avec jwt donc je l'ai désinstallé et j'ai utilisé PyJWT à la place.

2
Sameh Sharaf

Après avoir essayé plusieurs solutions de contournement, j'ai créé un nouveau bloc-notes python avec le même code et il semble fonctionner. Je ne sais pas quel était le problème avant. Considérez ce problème comme fermé. Merci beaucoup à ceux qui tenté.

0
Arvind Kandaswamy