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)]
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! :)
Vous pouvez utiliser le package PyJWT , où jwt.encode()
fonctionne très bien (pas besoin d'initialisation ou d'autres types de choses).
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.
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é.