Apple Silicon M1 Pro安装cryptography后缺失pkcs7模块问题求助
问题根因
cryptography 2.9.2版本不存在独立的cryptography.pkcs7顶层模块,你找不到这个路径属于正常情况,和你设备的Apple Silicon架构、Rosetta运行模式没有关联。
- 如果你需要使用PKCS7相关的加解密、签名验签功能,2.9.2版本中相关实现放在
cryptography.hazmat.primitives.asymmetric.padding模块下的PKCS7v15、PKCS7v2类中,属于密码学原语的填充工具类,调用时需要从该路径导入。 - 如果你需要处理PKCS#7格式的信封/签名数据结构,2.9.2版本没有内置对应高层封装,你可以选择两种方案:
- 升级cryptography到3.3版本及以上,新版本已新增
cryptography.hazmat.primitives.serialization.pkcs7模块提供对应高层API - 继续使用2.9.2版本的话,可以调用
pyopenssl库的OpenSSL.crypto模块中封装的PKCS7相关能力实现需求
- 升级cryptography到3.3版本及以上,新版本已新增
安装包完整性验证方案
如果你确认对应版本的cryptography应该存在相关文件,可执行以下命令验证当前安装的包文件是否完整:
# 激活虚拟环境后执行 pip show cryptography # 输出的Location字段对应虚拟环境的site-packages路径,确认和你查找的路径一致 # 列出cryptography包下的所有文件,确认是否有缺失 ls -la venv/lib/python3.9/site-packages/cryptography
如果确认安装的包文件缺失,大概率是跨架构安装时的二进制包兼容问题,可以执行以下命令重新编译安装对应版本:
pip uninstall -y cryptography # 强制从源码编译安装,避免拉取预编译的arm/amd不兼容二进制包 ARCHFLAGS="-arch x86_64" pip install cryptography==2.9.2
内容的提问来源于stack exchange,提问作者Kosaaaaa
相关产品推荐
相关产品推荐

