Installation

You can install PyJWT with pip:

$ pip install pyjwt

Cryptographic Dependencies (Optional)

If you are planning on encoding or decoding tokens using certain digital signature algorithms (like RSA or ECDSA), you will need to install the cryptography library.

$ pip install cryptography

Legacy Dependencies

Some environments, most notably Google App Engine, do not allow the installation of Python packages that require compilation of C extensions and therefore cannot install cryptography. If you can install cryptography, you should disregard this section.

If you are deploying an application to one of these environments, you may need to use the legacy implementations of the digital signature algorithms:

$ pip install pycrypto ecdsa

Once you have installed pycrypto and ecdcsa, you can tell PyJWT to use the legacy implementations with jwt.register_algorithm(). The following example code shows how to configure PyJWT to use the legacy implementations for RSA with SHA256 and EC with SHA256 signatures.

import jwt
from jwt.contrib.algorithms.pycrypto import RSAAlgorithm
from jwt.contrib.algorithms.py_ecdsa import ECAlgorithm

jwt.unregister_algorithm('RS256')
jwt.unregister_algorithm('ES256')

jwt.register_algorithm('RS256', RSAAlgorithm(RSAAlgorithm.SHA256))
jwt.register_algorithm('ES256', ECAlgorithm(ECAlgorithm.SHA256))