Python脚本虚拟环境正常运行,Docker中报AttributeError错误求助
解决Docker环境中PyJWT
hashes 属性缺失的问题 核心原因
PyJWT 3.x版本对内部模块结构做了调整,移除了jwt.algorithms.hashes的直接引用。你的本地虚拟环境依赖的是2.x版本(符合>=2.8.0的范围),但Docker构建时可能自动拉取了3.x版本,导致代码兼容性报错。
解决方案
锁定PyJWT版本范围
修改Pipfile中的依赖声明,限制在2.x系列,避免自动升级到3.x:[packages] pyjwt = ">=2.8.0,<3.0.0" requests-oauthlib = ">=1.3.1"重新生成锁定文件:
pipenv lock确保Docker构建使用锁定的依赖版本
在Dockerfile中添加强制按lock文件安装的命令,防止依赖版本漂移:COPY Pipfile Pipfile.lock /app/ WORKDIR /app RUN pipenv install --deploy --ignore-pipfile --system应急降级验证
若已构建镜像,可进入容器检查并手动降级:# 进入容器 docker exec -it <容器ID> bash # 查看当前PyJWT版本 pip show pyjwt # 降级到2.8.0版本 pip install pyjwt==2.8.0
内容的提问来源于stack exchange,提问作者zZzZ
相关产品推荐
相关产品推荐

