Jwtを使用すると、モジュールが見つからないというエラーが発生します。宣言方法は次のとおりです。
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 | Anaconda 2.3.0(64ビット)| (デフォルト、2015年5月28日、16:44:52)[MSC v.1500 64ビット(AMD64)]
JWTとPyJWTの両方がインストールされている場合に問題が発生します。 import jwt
PyJWTとは対照的にライブラリJWTをインポートしています-後者はエンコードに必要なものです。やった pip uninstall JWT
およびpip uninstall PyJWT
その後、最後にpip install PyJWT
。その後、正しいモジュールをインポートしてトークンを生成しました! :)
PyJWTパッケージ を使用できます。ここで、jwt.encode()
は正常に機能します(初期化などの必要はありません)。
Jwt.encode()を呼び出していたスクリプトを「jwt.py」と名付けたため、私も同じ問題に直面していました。そのため、スクリプトの命名には注意してください。ライブラリ名は使用しないでください。
いくつかの回避策を試した後、同じコードで新しいpythonノートブックを作成しましたが、動作しているようです。以前は何が問題だったのかわかりません。試みた。