Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyenv配置:错误:C编译器无法创建可执行文件_Python_Macos_Gcc_Pyenv_Macos Big Sur - Fatal编程技术网

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

Python pyenv配置:错误:C编译器无法创建可执行文件,python,macos,gcc,pyenv,macos-big-sur,Python,Macos,Gcc,Pyenv,Macos Big Sur,我正在尝试在运行MacOS Big Sur v11.1的笔记本电脑上安装多个版本的Python。我最初通过指令安装了xcode命令行工具、自制软件和python xcode选择-安装 /bin/bash-c$curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install.sh brew安装python 但后来我无意中将python升级到了3.9,我需要回到3.7.9。因此,我安装了pyenv,并尝试按照说明安装

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

xcode选择-安装

/bin/bash-c$curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install.sh

brew安装python


但后来我无意中将python升级到了3.9,我需要回到3.7.9。因此,我安装了pyenv,并尝试按照说明安装python3.7.9

brew安装pyenv

pyenv安装3.7.9

但我遇到了以下错误:

/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版本

[/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安装了gcc,这并没有解决问题。任何帮助都将不胜感激

编辑: pyenv似乎在使用clang而不是gcc。也许xcode select同时安装了这两个选项?clang-版本返回:


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

您的命令行工具CLT不支持macOS 11。 它要么已过时,要么已被修改。 请更新命令行工具CLT,如果没有可用的更新,请将其删除

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

softwareupdate --all --install --force
如果未显示任何更新,请运行:

sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
或者,从以下位置手动下载:


.Xcode、zlib和编译器选项似乎有问题。他们从brew制作了一些3.8.0 python版本的补丁

我的配置

$sw_ver 产品名称:macOS 产品版本:11.2.3 构建版本:20D91 $clang-版本 Apple clang版本12.0.0 clang-1200.0.32.29 目标:x86_64-apple-darwin20.3.0 线程模型:posix InstalledDir:/Library/Developer/CommandLineTools/usr/bin 这对我安装3.8.3和3.9.0起到了作用

Resinstall Xcode sudo rm-rf/Library/Developer/CommandLineTools xcode选择-安装 使用brew安装zlib和bzip2 brew重新安装zlib bzip2 安装tcl tk tkinter brew安装tcl tk 从python卸载以前的版本 pyenv卸载3.8.3 pyenv卸载3.9.0 安装修补过的python 3.8.3 环境\ PATH=$brew-前缀tcl tk/bin:$PATH\ LDFLAGS=-L$brew-前缀tcl tk/lib-L$brew-前缀zlib/lib-L$brew-前缀bzip2/lib\ CPPFLAGS=-I$brew-前缀tcl tk/include-L$brew-前缀zlib/include-L$brew-前缀bzip2/include\ PKG_CONFIG_PATH=$brew-前缀tcl tk/lib/pkgconfig\ CFLAGS=-I$brew-前缀tcl-tk/include-I$brew-前缀openssl/include-I$brew-前缀bzip2/include-I$brew-前缀zlib/include-I$brew-前缀readline/include-I$xcrun-显示sdk路径/usr/include\ LDFLAGS=-I$brew-前缀tcl tk/lib-L$brew-前缀openssl/lib-L$brew-前缀readline/lib-L$brew-前缀zlib/lib-L$brew-前缀bzip2/lib
pyenv安装-修补程序3.8.3<我使用了以下方法,并且成功了

CC=gcc pyenv安装3.7.10


对我来说,这是pyenv试图使用的clang编译器的一个问题。由于我有一个使用pyenv设置的活动Anaconda版本,它尝试使用与Anaconda捆绑的clang版本:

$ clang --version
clang version 10.0.0
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Users/myuser/.pyenv/versions/anaconda3-2020.02/bin
与:

我能够使用XCode clang编译器,一切正常。我能够用一个典型的:

pyenv install 3.9.5

不由自主地将python升级到3.9,我需要回到3.7.9——brew没有提供任何功能来安装您所需的确切版本吗?请参见,例如:是,我可以安装brewpython@3.7我有。但是,我无法brew切换python 3.7,brew info python仅显示出于某种原因安装的@3.9。ll/usr/local/Cellar | grep python秀python@3.9和python@3.7I我还担心,使用自制软件管理多个python安装可能比使用pyenv更棘手。我用rm删除了旧版本,运行install命令重新安装,现在一切都好了。谢谢重新安装xcode select并重新启动对我来说很有效
pyenv shell system
pyenv install 3.9.5