使用pyenv安装Python 3.6.6失败,C编译器无法生成可执行文件
解决pyenv安装Python 3.6.6时的构建失败问题
我之前在OS X 10.15.1(Catalina)上用pyenv安装老版本Python时,也碰到过几乎一模一样的错误——核心就是C编译器无法生成可执行文件,还伴随libSystem.tbd的链接问题。结合你的情况,问题根源大概率和Xcode命令行工具配置、老Python版本与新系统的架构兼容有关,下面是一步步的修复方案:
1. 先修复Xcode命令行工具的基础配置
这个是最常见的诱因,先确保你的Xcode工具链是正常的:
- 重新安装命令行工具(如果已经装过,也可以重置一下):
xcode-select --install sudo xcode-select --reset - 必须同意Xcode的许可协议,否则很多编译操作会失败:
sudo xcodebuild -license accept
2. 强制指定x86_64架构编译Python
Python 3.6.6是比较老的版本,和Catalina的默认编译设置可能存在架构不匹配的问题(链接器明确要求x86_64的libSystem.dylib),安装时手动指定架构:
ARCHFLAGS="-arch x86_64" pyenv install 3.6.6
3. 更新brew和pyenv到最新版本
你用brew安装的pyenv,如果版本太旧,可能对Catalina的支持不完善:
brew update brew upgrade pyenv
更新后再尝试安装,新版本的pyenv通常会修复一些系统兼容问题。
4. 指定系统SDK路径编译
如果还是报错,可能是编译器找不到正确的系统库路径,手动设置SDKROOT环境变量后再安装:
SDKROOT=$(xcrun --show-sdk-path) ARCHFLAGS="-arch x86_64" pyenv install 3.6.6
这个命令会让pyenv使用Xcode提供的正确系统SDK,避免链接器找不到libSystem相关文件。
5. 借助config.log排查细节
你提到已经有完整的config.log,可以打开它找更具体的错误:
- 找到日志里的测试编译命令(通常是一行以
clang开头的命令),复制出来在终端手动运行,看看具体的报错信息 - 比如如果提示某个依赖缺失,或者路径权限问题,就能针对性解决
问题根源总结
你的情况主要是这几个因素叠加:
- Xcode命令行工具未正确配置,导致编译器无法访问系统核心库
- 老版本Python(3.6.6)没有适配Catalina的默认编译架构
- 可能使用了较旧的pyenv版本,对新系统的支持不足
内容的提问来源于stack exchange,提问作者Phillip Beltre
相关产品推荐
相关产品推荐

