macOS Big Sur装libffi后pip3安装flask仍报No module named '_ctypes'错误
问题根因
你遇到的ModuleNotFoundError: No module named '_ctypes'报错,本质是pyenv编译Python 3.7版本时,没有正确读取到brew安装的libffi库路径,导致_ctypes模块没有被编译进Python环境,和flask本身无关。
解决步骤
- 首先执行
brew info libffi查看当前libffi的安装路径,Intel架构Mac默认路径为/usr/local/opt/libffi,M系列ARM架构Mac默认路径为/opt/homebrew/opt/libffi,后续步骤对应替换路径即可 - 卸载当前pyenv中安装的3.7.9版本:
pyenv uninstall 3.7.9 - 执行以下命令导入libffi的环境变量,供编译Python时识别(以M系列Mac为例,Intel架构替换路径前缀即可):
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" - 重新编译安装Python 3.7.9:
pyenv install 3.7.9 - 重新激活你的项目虚拟环境,也可以删除旧虚拟环境后新建,再执行
pip3 install flask即可正常安装。
备选方案
如果你的项目没有强制要求使用Python 3.7版本,可直接通过pyenv安装3.9及以上版本的Python,高版本Python编译时对libffi的适配更完善,无需手动配置环境变量即可自动识别,可直接规避该问题。
内容的提问来源于stack exchange,提问作者Prachi Modi
相关产品推荐
相关产品推荐

