M1 Mac原生安装Python3.7及Numpy报错问题求助
M1 Mac 原生安装支持numpy的Python3.7(无Rosetta)解决方案
问题根因
Python3.7内置的libffi版本未适配arm64架构,导致编译时跳过了_ctypes、_decimal等依赖模块的构建,后续安装numpy等库时触发模块缺失报错。
操作步骤
- 先安装原生arm64版本的Homebrew依赖包:
brew install libffi openssl readline sqlite3 xz zlib tcl-tk openblas - 触发pyenv下载Python3.7.10源码,下载完成后手动中止安装:
pyenv install 3.7.10 --keep - 进入pyenv缓存的源码目录,替换内置旧版libffi:
cd ~/.pyenv/cache/Python-3.7.10 rm -rf Modules/_ctypes/libffi_osx # 下载libffi 3.4.4版本源码解压后,将所有文件复制到对应目录 cp -r 本地libffi解压目录/* Modules/_ctypes/libffi_osx/
- 指定libffi编译参数,重新执行Python安装:
export LDFLAGS="-L/opt/homebrew/opt/libffi/lib" export CPPFLAGS="-I/opt/homebrew/opt/libffi/include" export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig" pyenv install 3.7.10
- 验证
_ctypes模块是否正常:
pyenv global 3.7.10 python -c "import _ctypes; print('模块加载成功')"
- 安装numpy:
OPENBLAS=$(brew --prefix openblas) pip install numpy
内容的提问来源于stack exchange,提问作者kellanburket
相关产品推荐
相关产品推荐

