在 macOS 12.3 Monterey 上安装 Python 3.8.10 出现问题

34

有没有人在macOS Monterey M1 Mac上安装Python 3.8.10时遇到问题?使用pyenv install尝试安装的任何版本都会出现以下错误:

python-build: use openssl@1.1 from homebrew python-build: use readline from homebrew Downloading Python-3.8.10.tar.xz... -> https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tar.xz Installing Python-3.8.10... python-build: use readline from homebrew python-build: use zlib from xcode sdk

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

Inspect or clean up the working tree at /var/folders/yg/s2w3pfj172v6kdwx7hvmq65m0000gn/T/python-build.20220322155830.88129 Results logged to /var/folders/yg/s2w3pfj172v6kdwx7hvmq65m0000gn/T/python-build.20220322155830.88129.log

Last 10 log lines: checking for --with-cxx-main=<compiler>... no checking for clang++... no configure:

By default, distutils will build C++ extension modules with "clang++". If this is not intended, then set CXX on the configure command line.

checking for the platform triplet based on compiler characteristics... darwin configure: error: internal configure error for the platform triplet, please file a bug report make: *** No targets specified and no makefile found.  Stop.

我在谷歌搜索中尝试了几乎所有问题,但都没有成功。我尝试使用 asdf python 插件和 pyenv 进行安装。

8个回答

39

苹果推出的一项更改导致了其故障。

在您的特定情况下, pyenv install 3.8.13 应该可行。

其他人可以检查 此线程

或使用其中任何一个版本:3.7.13、3.8.13、3.9.11 和 3.10.3


2
"或者使用这些版本之一:3.7.13、3.8.13、3.9.11和3.10.3。" >> 太好了!这些补丁非常重要,因为它们允许安装任何无法安装的次要版本。也许你可以在这里加粗一些,rahulg。 - mr_mmmmore
4
好的,我会尽力做到最好。下面是需要翻译的内容:3.7.13、3.8.13、3.9.11和3.10.3 - user1556435
对于Python 3.6,我可以安装版本 3.6.15 (pyenv install 3.6.15) - _macOS Monterey v12.0.1_。 - Vadim

15

这对我有用。

首先安装gcc;

brew install gcc

然后使用gcc运行pyenv安装。

CC=/opt/homebrew/bin/gcc-11 pyenv install 3.8.10

输入图片说明


1
我从这个回复中得到了解决此问题的提示。我使用Homebrew安装了gcc,但稍微更改了pyenv命令 CC=gcc pyenv install 3.9.12 - Khetho Mtembo
4
原文:Turns out my homebrew-installed gcc lives under /usr/local/Cellar/gcc/11.2.0_3/bin/gcc-11, so I had to modify the command accordingly.翻译:原来我使用 Homebrew 安装的 GCC 存在于 /usr/local/Cellar/gcc/11.2.0_3/bin/gcc-11,因此我需要相应地修改命令。 - Toon

14
brew install gcc && CC=`which gcc-11` pyenv install 3.8.10

谢谢!我不知道为什么,但将编译器设置为gcc-11有效了。我猜这可能与clang有关。 - Emma Labbé

3

我的帮助如下:

brew install gcc@11

之后:

CC=`which gcc-11` pyenv install 3.8.12

2

不需要使用brew安装gcc!这样做可能会给你带来更多麻烦!

Apple Command Line Tools中有一个捆绑的gcc,可以通过以下命令找到它:

which gcc

请注意,在 gcc 中不要添加任何特定版本号,例如 gcc-11gcc-12 等等。然后检查找到的 gcc 是否位于 /Library/Developer/CommandLineTools/ 目录下。期望的输出应该类似于:

$ which gcc
/Library/Developer/CommandLineTools/usr/bin/gcc

如果一切正常,意味着您运行了简单的which gcc命令并且它找到了gcc,并且找到的路径位于/Library/Developer/CommandLineTools/目录下,那么您可以使用以下命令通过pyenv安装Python:
CC=`which gcc` pyenv install 3.8.6

你可以安装任何你需要的Python版本。
如果你遇到了任何问题,请在评论区留言,这能帮助我们更清晰、更有用地回答你。

我的 which gcc 显示 /usr/bin/gcc 路径,如何切换到 /Library/Developer/CommandLineTools/usr/bin/gcc - Vadim
但是 gcc --version 显示 InstalledDir: /Library/Developer/CommandLineTools/usr/bin - Vadim
@Vadim CC=\which gcc` pyenv install 3.8.6会自动查找gcc二进制文件并将CC设置为找到的二进制文件的路径!如果您的版本不同,则必须手动将CC设置为所需gcc二进制文件的路径!例如,像这样CC=`/Library/Developer/CommandLineTools/usr/bin` pyenv install 3.8.6,而不要求which`来查找它! - AbdolHosein

2

我遇到了同样的问题。我意识到我的pyenv版本已经过时了。我通过运行以下命令使用homebrew进行了更新:

brew install pyenv

然后运行

pyenv install 3.10.6

运行得非常顺畅。

0

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,以帮助他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何写好回答的更多信息。 - undefined

-3

我遇到了同样的问题,解决方法是手动安装版本,以下是我执行的步骤:

  1. 在此处下载python-3.8.10版本:https://www.python.org/downloads/release/python-3810/
  2. 下载完成后,双击通过安装向导进行安装。
  3. 安装完成后,从finder或终端打开安装目录:/Applications/Python 3.8
  4. 运行Install Certificates.command,等待其完成。
  5. 在相同的路径下,运行Update Shell Profile.command
  6. 您已经完成了设置,可以从终端验证它:python3 --version

为手动安装的python 3.8.10版本设置虚拟环境:

  1. pip install --upgrade pip
  2. pip install virtualenv
  3. cd my_project_folder/
  4. virtualenv venv
  5. source venv/bin/activate
  6. 完成工作后,如需退出,请运行:deactivate

您可以在此处获取有关设置虚拟环境的更多信息:https://virtualenv.pypa.io/en/latest/user_guide.html#


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接