JWT: 'module' object has no attribute 'encode'

前端 未结 7 820
伪装坚强ぢ
伪装坚强ぢ 2021-02-04 23:18

I am getting a Module not found error when using jwt. Here is how I declared it:

def create_jwt_token():
    payload = {
        \"iat\": int(time.time(         


        
相关标签:
7条回答
  • 2021-02-04 23:30

    The problem arises if you have both JWT and PyJWT installed. When doing import jwt it is importing the library JWT as opposed to PyJWT - the latter is the one you want for encoding. I did pip uninstall JWT and pip uninstall PyJWT then finally pip install PyJWT. After that it imported the correct module and generated the token! :)

    0 讨论(0)
  • 2021-02-04 23:33

    You can use the PyJWT package, where jwt.encode() works fine (no need for initialization or other kinds of stuff).

    0 讨论(0)
  • 2021-02-04 23:43

    I was also facing the same issue because I had named the script from which I had been calling jwt.encode() as 'jwt.py'. So be careful while naming scripts. Try not to use any library names.

    0 讨论(0)
  • 2021-02-04 23:44

    I solved this problem and @josua's answer is correct I would like to answer with details. In my case, pyJwt was already installed. I was using getream client

    And then I was trying to install jwt using: jwt package

    And it is a known issue Issue Related to JWT

    So the actual problem is a quote from Yoshida:

    Unfortunately, no. As of now both libraries use the same jwt module namespace and Python's module system cannot resolve import jwt deterministically.

    So I checked my pip freeze and jwt was installed and I fixed this issue by using these commands:

    pip uninstall jwt==1.0.0
    pip uninstall PyJWT
    pip install PyJWT
    

    And now my code:

    encoded = jwt.encode({'some': 'payload'}, 'secret', algorithm='HS256')
    

    works fine.

    0 讨论(0)
  • 2021-02-04 23:47

    After trying several workarounds, I created a new Python notebook with the same code and it appears to be working. I am not sure what was the issue before.

    0 讨论(0)
  • 2021-02-04 23:48

    Apart from (re)installing the PyJWT dependency through pip which other answers already mention make sure following files are not in the current directory (i.e. pwd) you're either running python in or your .py script:

    jwt.py
    token.py
    
    0 讨论(0)
提交回复
热议问题