Mac M1芯片Python环境安装M2Crypto报错无法完成安装
问题根因
编译M2Crypto时抛出的Unable to find 'openssl/xxx.h'错误,核心原因有三点:
- 新版macOS不再默认提供
/usr/include路径下的系统开发头文件,M2Crypto安装脚本默认的OpenSSL头文件搜索路径无效 - M1芯片Mac上Homebrew的默认安装路径为
/opt/homebrew,和旧款Intel Mac的/usr/local路径不一致,安装脚本未适配arm64架构下的Homebrew依赖查找逻辑 - M2Crypto 0.38.0版本不兼容OpenSSL 3.0+接口,macOS系统内置的LibreSSL也缺少对应编译所需的完整头文件
解决步骤
- 先安装编译所需的依赖,执行命令:
brew install openssl@1.1 swig
注意:必须安装openssl@1.1版本,安装更高版本的openssl@3会触发接口不兼容的编译错误
- 临时指定OpenSSL的头文件、动态库路径,直接执行安装命令即可:
env LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib" \ CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include" \ pip install m2crypto==0.38.0
- 如果执行上述命令后仍然报错,先将OpenSSL相关环境变量写入当前终端会话,再重新安装全量依赖:
export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH" export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib" export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include" export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig" pip install -r requirements.txt
补充说明
- 如果你通过Rosetta 2转译运行x86架构的Python环境,将上述命令中所有
/opt/homebrew路径替换为/usr/local即可,这是Intel架构下Homebrew的默认安装路径。 - 不要尝试手动创建
/usr/include目录、拷贝头文件或关闭系统SIP权限修改系统目录文件,会破坏系统安全结构,后续系统更新后也会失效。 - Python 2.7已停止官方维护多年,若项目条件允许,优先升级到Python 3.x环境,新版M2Crypto对Python3、arm64架构Mac的适配更完善,不会出现这类路径适配问题。
内容的提问来源于stack exchange,提问作者ahcyT
相关产品推荐
相关产品推荐

