运行cryptography代码出现Python3.6弃用警告如何解决
问题原因
该警告属于依赖弃用提示,不是代码语法错误:
- Python 3.6早在2021年12月就已停止官方维护,不再接收安全更新和bug修复
- 你当前环境安装的新版
cryptography库已经明确将在后续版本中移除对Python 3.6的支持,警告是paramiko库导入cryptography依赖时触发的,和你写的那行from cryptography.hazmat.backends import default_backend导入代码没有直接关系。
排查步骤
- 执行
python3 --version确认当前运行代码的Python解释器实际版本,很多人升级系统Python后软链接未正确配置,实际运行代码的还是旧的3.6版本 - 执行
pip3 list | grep -E "cryptography|paramiko"查看当前环境安装的两个依赖的具体版本号 - 如果使用虚拟环境,先确认是否激活了基于旧版Python 3.6创建的虚拟环境,避免环境混淆
解决方案
按优先级从高到低选择:
根治方案:升级Python版本
升级Python解释器到3.7及以上长期维护版本(推荐3.8~3.10版本,兼容性更好),升级完成后重装对应依赖:# 先卸载旧版本依赖 pip3 uninstall -y paramiko cryptography # 安装适配新Python版本的稳定版依赖 pip3 install paramiko cryptography重装完成后再运行导入代码,警告会直接消失。
注意:不要直接删除系统自带的旧Python版本,Linux系统大量底层组件依赖默认Python,强行删除会导致系统功能异常,推荐使用pyenv等版本管理工具实现多Python版本共存,或者用虚拟环境隔离项目依赖。
兼容方案(无法升级Python时使用)
如果受业务限制暂时必须使用Python 3.6,直接把cryptography版本锁定在最后一个支持Python 3.6的版本即可:pip3 install "cryptography<39.0.0"锁定版本后既不会弹出弃用警告,也不会因为后续依赖自动升级导致代码运行报错。
临时方案(仅屏蔽警告)
如果暂时不想改动依赖版本,只是不想看到警告输出,可以在代码最开头添加警告过滤规则:import warnings from cryptography.utils import CryptographyDeprecationWarning # 过滤cryptography弃用警告 warnings.filterwarnings("ignore", category=CryptographyDeprecationWarning)注意:该方案只是隐藏了警告输出,没有解决根本兼容问题,后续
cryptography正式移除Python 3.6支持后代码依然会报错,仅适合临时调试场景使用。
内容的提问来源于stack exchange,提问作者Kanhaiya Singh
相关产品推荐
相关产品推荐

