首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyenv配置:错误:C编译器无法创建可执行文件

pyenv配置:错误:C编译器无法创建可执行文件
EN

Stack Overflow用户
提问于 2021-01-18 16:59:16
回答 7查看 23.2K关注 0票数 34

我正在我的笔记本电脑上安装多个版本的Python,运行的是MacOS Big v11.1。我最初通过指令这里安装了xcode命令行工具、自制工具和python。

xcode-select --install

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

brew install python

但是稍后我会不由自主地将python升级到3.9,我需要返回到3.7.9。因此,我安装了pyenv,并试图按照这里的指令安装python3.7.9

brew install pyenv

pyenv install 3.7.9

但我遇到了以下错误:

代码语言:javascript
复制
/var/folders/8n/ml0qwc091w9bhpszzxy9djl00000gn/T/python-build.20210118111111.56108 /usr/local/Cellar
/var/folders/8n/ml0qwc091w9bhpszzxy9djl00000gn/T/python-build.20210118111111.56108/Python-3.7.9 /var/folders/8n/ml0qwc091w9bhpszzxy9djl00000gn/T/python-build.20210118111111.56108 /usr/local/Cellar
checking build system type... x86_64-apple-darwin20.2.0
checking host system type... x86_64-apple-darwin20.2.0
checking for python3.7... no
checking for python3... python3
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... checking for --without-gcc... no
checking for --with-icc... no
checking for gcc... clang
checking whether the C compiler works... no
configure: error: in `/var/folders/8n/ml0qwc091w9bhpszzxy9djl00000gn/T/python-build.20210118111111.56108/Python-3.7.9':
configure: error: C compiler cannot create executables
See `config.log' for more details
make: *** No targets specified and no makefile found.  Stop.

从网上的其他答案来看,我的gcc可能已经过时了。我检查了我的gcc版本

代码语言:javascript
复制
[/usr/local/Cellar]$ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr
    --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 Apple clang version 11.0.3 (clang-1103.0.32.62) Target: x86_64-apple-darwin20.2.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin

这似乎表明我在4.2.1版上。我还没有找到一个方法来自己更新它,但是brew install gcc并没有解决这个问题。任何帮助都将不胜感激。

编辑:似乎使用的是clang而不是gcc。也许xcode-select安装了这两个?clang --version返回:

代码语言:javascript
复制
Apple clang version 11.0.3 (clang-1103.0.32.62)
Target: x86_64-apple-darwin20.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
EN

回答 7

Stack Overflow用户

发布于 2021-03-07 23:16:55

这对我有用:我将命令行工具作为root删除并重新安装.

您的命令行工具(CLT)不支持macOS 11。它要么已经过时,要么已经修改过。如果没有更新,请更新命令行工具(CLT)或删除它。

从系统首选项中的软件更新中更新它们或运行:

代码语言:javascript
复制
softwareupdate --all --install --force

如果没有显示任何更新,请运行:

代码语言:javascript
复制
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install

或者,从以下地方手动下载:

https://developer.apple.com/download/more/

票数 43
EN

Stack Overflow用户

发布于 2021-04-06 10:09:29

似乎Xcode、zlib和编译器选项都有问题。从brew到3.8.0python版本,他们做了一些补丁。

我的配置

代码语言:javascript
复制
$ sw_vers
ProductName:    macOS
ProductVersion: 11.2.3
BuildVersion:   20D91
代码语言:javascript
复制
$ clang --version
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin20.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

我安装了3.8.3和3.9.0

代码语言:javascript
复制
# Re-install Xcode
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install

# Install zlib and bzip2 using brew
brew reinstall zlib bzip2
 
# Install tcl-tk tkinter
brew install tcl-tk

# Uninstall previous versions from python
pyenv uninstall 3.8.3
pyenv uninstall 3.9.0

# Install python 3.8.3 patched
env \
  PATH="$(brew --prefix tcl-tk)/bin:$PATH" \
  LDFLAGS="-L$(brew --prefix tcl-tk)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" \
  CPPFLAGS="-I$(brew --prefix tcl-tk)/include -L$(brew --prefix zlib)/include -L$(brew --prefix bzip2)/include" \
  PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig" \
  CFLAGS="-I$(brew --prefix tcl-tk)/include -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" \
  LDFLAGS="-I$(brew --prefix tcl-tk)/lib -L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib"
  pyenv install --patch 3.8.3 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
  
env \
  PATH="$(brew --prefix tcl-tk)/bin:$PATH" \
  LDFLAGS="-L$(brew --prefix tcl-tk)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" \
  CPPFLAGS="-I$(brew --prefix tcl-tk)/include -L$(brew --prefix zlib)/include -L$(brew --prefix bzip2)/include" \
  PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig" \
  CFLAGS="-I$(brew --prefix tcl-tk)/include -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" \
  LDFLAGS="-I$(brew --prefix tcl-tk)/lib -L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib"
  pyenv install 3.9.0

我的线人想出了解决办法:

票数 8
EN

Stack Overflow用户

发布于 2021-05-06 18:34:18

我用了下面的方法,它起了作用

CC=gcc pyenv安装3.7.10

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65778888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档