PyEnv BUILD FAILED在MacOS上安装Python

y2k*_*ham 18 pyenv

在尝试安装Python 3.6.6(for Airflow)使用PyEnvMacOS,我遇到了以下堆栈跟踪的构建失败

文件"/private/var/folders/6y/kf699bqj2sgcgjshb20fr5zh0000gn/T/python-build.20180721180716.86347/Python-3.6.6/Lib/xmlrpc/client.py",第138行,来自xml.parsers import expat文件"/ private /var/folders/6y/kf699bqj2sgcgjshb20fr5zh0000gn/T/python-build.20180721180716.86347/Python-3.6.6/Lib/xml/parsers/expat.py",第4行,来自pyexpat import*ModuleNotFoundError:没有名为'pyexpat'的模块make:***[install]错误1

BUILD FAILED(OS X 10.13.6使用python-build 20180424)

在/var/folders/6y/kf699bqj2sgcgjshb20fr5zh0000gn/T/python-build.20180721180716.86347检查或清理工作树.结果记录到/ var/folders/6y/kf699bqj2sgcgjsh

我遵循的文档所提到的步骤的建立PyEnvMac通过Homebrew.


环境/框架版本

  • MacOS High Sierra 10.13.6
  • Homebrew 1.7.1
  • PyEnv 1.2.6
  • 现有的Python发行版
    • Python 2.7.15 [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
    • Python 3.7.0 [Clang 9.0.0 (clang-900.0.39.2)] on darwin

小智 34

我正在为那些试图在 2021 年解决此问题的人发布我的解决方案。我使用的是 macOS Big Sur 版本 11.5.1。对我来说,这有效:

  1. 卸载旧工具

    $ sudo rm -rf /Library/Developer/CommandLineTools

  2. 重新安装 Xcode 命令行工具

    $ xcode-选择--安装

  3. 使用 pyenv 安装 python

    $ pyenv安装3.9.5

在此输入图像描述

  • 我可以确认这在 MacOS Big Sur Ver 11.5.2 中对我有用。为了安全起见,我在执行上述步骤之前卸载了 pyenv,然后在上述步骤 2 之后重新安装: `curl https://pyenv.run | bash` (2认同)

小智 18

我在Mojave和Python 3.7.3中遇到了这个问题。

这为我工作:

SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk MACOSX_DEPLOYMENT_TARGET=10.14 pyenv install 3.7.3
Run Code Online (Sandbox Code Playgroud)

  • 有人愿意向新手解释一下这是什么吗:)? (4认同)

Cal*_*m M 12

接受的答案对我不起作用(莫哈韦沙漠),但这确实可以:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Run Code Online (Sandbox Code Playgroud)

感谢http://www.blog.howechen.com/macos-mojave-pyenv-install-multi-version-build-failed-solution/


mar*_*ats 9

安装Xcode:

xcode-select --install
Run Code Online (Sandbox Code Playgroud)

安装酿造:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Run Code Online (Sandbox Code Playgroud)

或者

更新酿造:

brew upgrade
Run Code Online (Sandbox Code Playgroud)

安装包:

brew install libxml2
brew install libxslt
brew link libxml2 --force
brew link libxslt --force
brew install openssl
Run Code Online (Sandbox Code Playgroud)

安装 Pyenv

curl https://pyenv.run | bash
Run Code Online (Sandbox Code Playgroud)

将以下行插入到 .bashrc/.zshrc 配置文件中:

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Run Code Online (Sandbox Code Playgroud)

重新启动终端并执行:

pyenv install 3.6.5
Run Code Online (Sandbox Code Playgroud)

如果仍然不起作用:(只需将 python 版本更改为所需的版本 - 在我的情况下,我已将 python 3.6.5 安装到 pyenv)

CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.6.5 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
Run Code Online (Sandbox Code Playgroud)


Sri*_*wda 8

我可以使它工作的唯一方法是在安装之前通过以下前缀

CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include 
-I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
pyenv install -v 3.7.1
Run Code Online (Sandbox Code Playgroud)

  • 如果您复制粘贴上面的代码片段,请确保删除第一行末尾的新行,这可能会破坏编译 (4认同)

y2k*_*ham 5

我可以通过参考常见的构建问题来摆脱上述错误

  • brew install readline xz
  • xcode-select --install
  • brew install openssl

之后,我安装并初始化 pyenv

  • brew install pyenv
  • pyenv init(在您的项目目录中

最后安装并激活所需的python版本

  • pyenv安装3.6.6
  • pyenv local 3.6.6(在您的项目目录中

这里的链接到原线#1188GitHub通过@Harry莫雷诺

  • 就我而言,它不起作用,错误仍然相同 (2认同)