MacOS下pyenv环境pip安装numpy报No module named '_ctypes'如何解决
报错原因
该报错核心为pyenv安装的Python 3.7版本缺少_ctypes模块。_ctypes是Python处理C类型接口的核心内置模块,编译时依赖系统的libffi库,若MacOS环境编译安装Python前未提前安装该依赖,就会导致_ctypes模块编译失败被跳过。本次安装numpy时需要调用setuptools完成源码包编译,而setuptools依赖ctypes模块,因此直接触发缺失报错。
解决方案
- 第一步:安装系统依赖
libffi,执行命令:
brew install libffi
若未安装Homebrew,可先完成Homebrew安装后再执行上述命令。
- 第二步:配置libffi的环境变量,使pyenv编译Python时可识别到该库路径:
export LDFLAGS="-L$(brew --prefix libffi)/lib" export CPPFLAGS="-I$(brew --prefix libffi)/include" export PKG_CONFIG_PATH="$(brew --prefix libffi)/lib/pkgconfig"
- 第三步:卸载原有缺失模块的Python版本,重新编译安装:
pyenv uninstall 3.7.11 pyenv install 3.7.11
- 第四步:切换到对应Python版本后重新安装numpy:
pyenv local 3.7.11 pip install numpy
如果安装仍失败,可先升级pip到最新版本后重试:
pip install --upgrade pip
内容的提问来源于stack exchange,提问作者KUNPENG LI
相关产品推荐
相关产品推荐

