使用pyenv连接VS Code与Databricks时安装dbx遇cffi报错
解决macOS下pyenv环境安装cffi时'Python.h'找不到的问题
问题背景
使用pyenv管理Python 3.8.9,在macOS 12.3环境执行pip install dbx时,cffi包编译失败,报错fatal error: 'Python.h' file not found,clang版本13.1.6,pip版本23.0.0。
解决方案
步骤1:安装Xcode命令行工具
macOS下编译C扩展需要依赖Xcode Command Line Tools,执行以下命令安装:
xcode-select --install
安装完成后重启终端,确保环境变量生效。
步骤2:让clang找到pyenv Python的头文件
方法A:重新安装pyenv管理的Python(推荐)
如果还没安装目标Python版本,或者愿意重新安装,执行以下命令,通过CFLAGS指定SDK头文件路径:
CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.8.9
安装完成后切换到该版本:
pyenv local 3.8.9
方法B:临时指定CFLAGS安装cffi
如果不想重新安装Python,直接设置CFLAGS指向当前pyenv Python的include目录,再安装cffi:
CFLAGS="-I$(pyenv prefix)/include" pip install cffi
步骤3:验证并安装dbx
执行以下命令确认cffi安装成功:
pip show cffi
输出包含版本信息即表示安装成功,之后再执行:
pip install dbx
原因说明
pyenv安装的Python默认可能没有让clang正确识别到Python.h的路径,而macOS的Xcode Command Line Tools提供了编译所需的基础环境,通过指定CFLAGS可以让编译器找到对应的头文件,从而完成cffi的编译安装。
内容的提问来源于stack exchange,提问作者Nankin
相关产品推荐
相关产品推荐

