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,它开始正常工作。