Python2.7环境导入jwcrypto包触发SyntaxError语法错误如何解决
问题根因
你初步判断的结论完全正确:raise <异常> from <原异常>是Python 3.3及以上版本才支持的异常链语法,Python 2.7不支持该语法。目前PyPI上默认安装的最新版jwcrypto早已停止对Python 2.7的兼容适配,因此直接安装会出现语法报错。
解决方案
你可以根据自己的需求选择以下任意一种方案:
- 方案1(推荐):安装支持Python 2.7的最后一版jwcrypto
先卸载当前安装的高版本jwcrypto:
再安装指定兼容版本0.6.0:pip uninstall -y jwcrypto
安装完成后重新执行导入语句即可正常使用。pip install jwcrypto==0.6.0 - 方案2:手动修改源码适配Python 2.7
如果你必须使用高版本jwcrypto的功能,可以手动修改jwcrypto源码中所有带raise from语法的行,将类似raise InvalidJWKType(kty) from e的写法替换为Python 2.7兼容的写法:
注意需要遍历所有jwcrypto的源码文件,把所有exc = InvalidJWKType(kty) exc.__cause__ = e raise excraise from语句全部修改,该方案改造成本较高,且后续重新安装包需要再次修改,仅建议临时应急使用。 - 方案3:迁移至Python 3运行环境
Python 2.7已于2020年正式停止官方维护,绝大多数主流安全、工具库都已停止对其的兼容支持,后续还会面临更多兼容性问题和安全风险,条件允许的情况下建议将业务代码迁移至Python 3环境运行。
内容的提问来源于stack exchange,提问作者lsqqqq
相关产品推荐
相关产品推荐

