You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS Big Sur下pyenv安装Python 3.9.1构建失败问题求助

提问翻译

我知道这类相关问题的反馈非常多,自去年我首次尝试安装Python 3.9.0起,就查阅了不少相关资料,也参考了多个同类型问题的讨论内容。
无论我设置什么样的环境变量,也不管是将XCode升级到最新的12.5版本,还是停留在12.3版本(HomeBrew包管理器提示该版本已过时),我都无法通过pyenv成功安装Python 3.9.1。
但另一方面,我已经通过Homebrew成功安装了Python 3.9.1和3.9.5,说明编译器本身是正常可用的。
我最近一次尝试时设置了如下环境变量:

export MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion | cut -c -5)"
export LIBRARY_PATH="$(brew --prefix openssl)/lib:${LIBRARY_PATH}"
export PYTHON_CONFIGURE_OPTS="--enable-framework"
export PYTHON_CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl) ${PYTHON_CONFIGURE_OPTS}"

export LDFLAGS="-L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" 
export CPPFLAGS="-I$(brew --prefix zlib)/include -I$(brew --prefix bzip2)/include" 
export CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix zlib)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" 
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib"

操作后始终报如下错误:

BUILD FAILED (OS X 11.4 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/c_/ll8fp86d39d2qthh_cbg8vlc0000gp/T/python-build.20210701193101.41835
Results logged to /var/folders/c_/ll8fp86d39d2qthh_cbg8vlc0000gp/T/python-build.20210701193101.41835.log

Last 10 log lines:
checking for python3.9... python3.9
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "darwin"
checking for gcc... gcc-10
checking whether the C compiler works... no
configure: error: in `/var/folders/c_/ll8fp86d39d2qthh_cbg8vlc0000gp/T/python-build.20210701193101.41835/Python-3.9.1':
configure: error: C compiler cannot create executables
See `config.log' for more details
make: *** No targets specified and no makefile found.  Stop.

令我疑惑的是报错的最后一行和其他同类问题的反馈略有差异,另外“C compiler cannot create executables”的报错我之前以为是iTerm没有获得完整磁盘权限导致的,但排查后发现权限是正常的。
我不清楚报错中提到的target是什么,所以才尝试设置了上述环境变量,但并没有解决问题。部分站点提到需要手动执行make命令,我认为该步骤应该是pyenv自动执行的,而现在报错没有找到makefile,这又引出了新的问题点。
请问有没有人遇到过相同的问题,或者可以帮我排查一下问题原因?

问题更新

我刚刚发现执行pyenv which gcc时输出的路径是/usr/bin/gcc,按理来说应该使用CommandLine Tools或者HomeBrew安装的gcc,这会不会是问题的诱因?


解决方案

1. 编译器路径冲突修复

你观察到的pyenv which gcc返回/usr/bin/gcc是核心诱因: macOS 自带的/usr/bin/gcc实际是clang的软链接,和构建日志中检测到的gcc-10不匹配,pyenv编译时校验编译器可用性失败,直接终止了后续配置流程,自然不会生成makefile,也就出现了后续的make报错。
执行以下命令临时指定编译使用的gcc、g++路径,可根据实际安装的gcc版本调整版本号:

export CC=gcc-10
export CXX=g++-10

如果希望永久生效,可将上述两行添加到shell配置文件(/.zshrc或/.bash_profile)中,执行source ~/.zshrc(zsh环境)或source ~/.bash_profile(bash环境)后生效。

2. 合并冗余环境变量

你当前设置的环境变量存在重复赋值问题,LDFLAGS被定义了两次,前一次配置会被直接覆盖,建议合并为统一配置:

export MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion | cut -c -5)"
export LIBRARY_PATH="$(brew --prefix openssl)/lib:$(brew --prefix zlib)/lib:$(brew --prefix bzip2)/lib:$(brew --prefix readline)/lib:${LIBRARY_PATH}"
export PYTHON_CONFIGURE_OPTS="--enable-framework --with-openssl=$(brew --prefix openssl)"
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib"
export CPPFLAGS="-I$(brew --prefix zlib)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix openssl)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include"
export CFLAGS="${CPPFLAGS}"

3. 重置Xcode命令行工具路径

Xcode命令行工具路径异常也会导致编译依赖查找失败,执行以下命令重置:

sudo xcode-select --reset

如果重置后仍有问题,可先卸载现有命令行工具再重新安装:

sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install

4. 执行安装

完成上述配置后,先清理之前的失败构建缓存,再执行安装命令:

pyenv install --clean 3.9.1

内容的提问来源于stack exchange,提问作者Andrea Moro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 21:33:03