Python JWT:';模块';对象没有属性';编码';
我在使用时遇到模块未找到错误。我是这样宣布的:Python JWT:';模块';对象没有属性';编码';,python,jwt,Python,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)
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
中找不到encode。我在jwt
上做了一个选项卡,发现编码是jwt.jwt
中的一个方法。我试着把它改成
jwt_string = jwt.JWT.encode(payload, shared_key)
它给出了这个错误:
必须使用JWT实例作为第一个参数调用unbound method encode()(改为使用dict实例)
我做错了什么?以下是我的Python环境的版本信息:
2.7.10 | Anaconda 2.3.0(64位)|(默认,2015年5月28日,16:44:52)[MSC v.1500 64位(AMD64)]
在尝试了几个变通方法之后,我用相同的代码创建了一个新的Python笔记本,它似乎正在工作。我不确定以前是什么问题。您可以使用,其中
jwt.encode()
工作正常(不需要初始化或其他类型的东西)。如果同时安装了jwt和PyJWT,则会出现问题。当执行import jwt
时,它导入的是库jwt,而不是PyJWT-后者是您想要编码的库。我确实pip卸载了JWT
和pip卸载了PyJWT
,最后pip安装了PyJWT
。之后,它导入了正确的模块并生成了令牌!:) 我也面临同样的问题,因为我将调用jwt.encode()的脚本命名为“jwt.py”。所以在命名脚本时要小心。尽量不要使用任何库名称。请改用。我在中遇到了同样的问题,因此我卸载了它并使用了PyJWT。我解决了这个问题,@josua的回答是正确的,我想详细回答。就我而言,pyJwt已经安装好了。我在用
然后我尝试使用以下方法安装jwt:
这是一个众所周知的问题
因此,实际问题是引用了以下内容:
不幸的是,没有。到目前为止,两个库都使用相同的jwt模块
命名空间和Python的模块系统无法解析导入jwt
决定性地
因此,我检查了我的pip冻结,安装了jwt,并使用以下命令修复了此问题:
pip uninstall jwt==1.0.0
pip uninstall PyJWT
pip install PyJWT
现在我的代码是:
encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')
工作正常。除了通过pip(重新)安装PyJWT依赖项(其他答案已经提到)之外,请确保以下文件不在当前目录中(即pwd
),您正在或您的.py
脚本中运行python
:
jwt.py
token.py
就我而言,我只是需要
pip install pyjwt
这对我很有用:
pip install djangorestframework-jwt==1.11.0
您需要初始化
JWT
对象。jwt.jwt().encode(…)
有效吗?jwt.jwt().encode(…)无效。还有,如何初始化JWT对象?是的,就是这样。错误安装了一个名为“jwt”的程序包,该程序包与“PyJWT”的jwt模块发生了错误。目前,jwt和PyJWT都报告了来自pip install
,10.0.1的相同版本。我来这里是为了再次检查我是否真的想要pyjwt
确保flaskjwt模块也已卸载。还有一件事,pip install PyJWT=1.6.4使它非常适合我pip安装PyJWT=1.6.4
对我来说,PyJWT版本必须从第2版升级非常重要,并解决了我的问题您的笔记本使用不同的虚拟环境吗?该环境中的库可能不同。我得到了以下错误“attributeerror模块“jwt”没有属性“get unverified header”。然后我移除了jwt并安装了PyJWT,它开始正常工作。