You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下使用Python Cryptography模块遇NameError问题求助

问题解决方法

根源分析

Cryptography 1.12是2016年发布的老旧版本,完全不兼容Python 3.10。Python 3.10已移除smtplib.encode_base64函数,而旧版本Cryptography内部仍在调用该函数,导致触发NameError。

解决步骤

1. 升级Cryptography到兼容版本

这是最直接且推荐的方案,打开Windows命令提示符执行:

pip install --upgrade cryptography

Cryptography 3.4.8及以上版本正式支持Python 3.10,升级完成后即可正常导入cryptography.fernet.Fernet。

2. (不推荐)手动修复依赖问题(仅当无法升级时)

如果因特殊需求必须保留Cryptography 1.12,需找到Cryptography内部调用smtplib.encode_base64的代码位置,将其替换为base64.b64encode:

  • 找到Python安装目录下Lib\site-packages\cryptography相关文件(具体位置需根据报错调用栈定位)
  • 将所有from smtplib import encode_base64或smtplib.encode_base64替换为base64.b64encode,注意encode_base64默认会添加换行,替换后需手动处理换行逻辑。

验证

升级或修改后,重新运行脚本,导入cryptography.fernet.Fernet即可正常执行。

内容的提问来源于stack exchange,提问作者ed.vcnt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:25:18