【问题标题】:PyEnv BUILD FAILED installing Python on MacOSPyEnv BUILD FAILED 在 MacOS 上安装 Python
【发布时间】:2019-01-04 04:49:09
【问题描述】:

在尝试在MacOS 上使用PyEnv 安装Python 3.6.6(对于Airflow)时,我遇到了构建失败,并遵循stack-trace

File
"/private/var/folders/6y/kf699bqj2sgcgjshb20fr5zh0000gn/T/python-build.20180721180716.86347/Python-3.6.6/Lib/xmlrpc/client.py",
line 138, in <module>
    from xml.parsers import expat   File "/private/var/folders/6y/kf699bqj2sgcgjshb20fr5zh0000gn/T/python-build.20180721180716.86347/Python-3.6.6/Lib/xml/parsers/expat.py",
line 4, in <module>
    from pyexpat import * ModuleNotFoundError: No module named 'pyexpat' make: *** [install] Error 1

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

Inspect or clean up the working tree at
/var/folders/6y/kf699bqj2sgcgjshb20fr5zh0000gn/T/python-build.20180721180716.86347
Results logged to /var/folders/6y/kf699bqj2sgcgjsh

我已按照setting-up PyEnv on Mac via 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

【问题讨论】:

    标签: pyenv


    【解决方案1】:

    我在使用 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
    

    【讨论】:

    • 在 Mojave 10.14.5 上运行良好。其他答案无效。
    • 在 macOS Mojave 10.14.6 上运行良好
    • 使用 Python 3.7.3 在 macOS Catalina (10.15.3) 上为我工作
    • 有人愿意解释一下这对新手有什么影响吗:)?
    • 有没有办法设置环境,所以我们不必每次都包含SDKROOTMACOSX_DEPLOYMENT_TARGET
    【解决方案2】:

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

    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
    

    【讨论】:

    • 如果你复制粘贴上面的 sn-p,请确保删除第一行末尾的新行,这可能会破坏编译
    【解决方案3】:

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

    sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
    

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

    【讨论】:

    • 我想这可能有效,但这是个好主意吗?这不会阻止您在不同的时间使用不同的 SDK 版本吗?据推测,Apple 改变了这一点是有原因的......
    • 有效。希望它不会破坏其他东西。
    • 这是 Mojave 的已知要求,如此处所述 github.com/pyenv/pyenv/wiki/Common-build-problems 我在初始安装期间经常完成但仍然遇到相同的错误
    【解决方案4】:

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

    1. 卸载旧工具

      $ sudo rm -rf /Library/Developer/CommandLineTools

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

      $ xcode-select --install

    3. 使用 pyenv 安装 python

      $ pyenv 安装 3.9.5

    【讨论】:

    • 我可以确认这在 MacOS Big Sur Ver 11.5.2 中对我有用。为了安全起见,我在执行上述步骤之前卸载了 pyenv,然后在上面的步骤 2 之后重新安装:curl https://pyenv.run | bash
    • 这对我有用,谢谢。
    【解决方案5】:

    通过参考Common build problems,我能够摆脱上述错误

    • 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(在您的项目目录中

    这是@Harry MorenoGitHub上原始thread #1188的链接,@Harry Moreno

    【讨论】:

    • 在我的情况下它不起作用,错误保持不变
    • 如果您拥有最新版本的 XCode 并且您已“同意”新许可证,则此方法有效!
    • 在我的情况下也不起作用,但 Srinivas Gowda 解决方案可以。无论如何,该线程的链接很有用。
    • 如果你在 Mac OS catalina 上安装了 AWS ebs cli,这有助于我安装它
    【解决方案6】:

    安装 Xcode:

    xcode-select --install
    

    安装 Brew:

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

    更新 brew:

    brew upgrade
    

    安装包:

    brew install libxml2
    brew install libxslt
    brew link libxml2 --force
    brew link libxslt --force
    

    安装 Pyenv

    curl https://pyenv.run | bash
    

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

    export PATH="$HOME/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    

    重启终端并执行:

    pyenv install 3.6.5
    

    如果还是不行: (只需将 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)
    

    【讨论】:

    • --patch 是唯一对我有用的东西。谢谢。
    【解决方案7】:

    简短回答:

    $ brew upgrade
    

    现在你可以尝试通过 pyenv 安装 python

    $ pyenv install 3.7.4
    

    那么,你必须设置python路径

    pyenv global 3.7.4
    

    现在,关闭并打开一个新终端并编写命令

    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
    

    就是这样。对我来说很好。

    【讨论】:

    • 我试过了,但没有用。 brew upgrade 部分运行良好(花了一段时间),但随后 pyenv install 3.7.4 给出了 BUILD FAILED (OS X 11.1 using python-build 20180424) 检查或清理 /var/folders/m8 处的工作树...跨度>
    【解决方案8】:

    在我的情况下,这是由于数据从旧 Mac 迁移到新 Mac 造成的。 Xcode 命令行工具和 Homebrew 都进行了迁移,但出现了问题。从头开始重新安装它们对我有用。

    重新安装 CLI 工具:

    $ sudo rm -rf /Library/Developer/CommandLineTools
    
    $ xcode-select --install
    

    重新安装和更新 Homebrew:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
    
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
    brew update
    

    安装 pyenv + 包和 python 3:

    brew install pyenv
    brew install openssl readline sqlite3 xz zlib
    pyenv install 3.7.5
    

    【讨论】:

      【解决方案9】:

      升级到 Big Sur 后,您需要重新安装 X Code 工具。即使你以前做过

      xcode-select --install

      这对我有用

      如果这不起作用,请强制重置

      sudo xcode-select --reset

      更多详情可以在这里找到:https://dev.to/o9uzdev/macos-xcrun-error-invalid-active-developer-path-missing-xcrun-411a

      【讨论】:

        【解决方案10】:

        尝试以下任何一种:

        ❯ xcode-select --install
        ❯ xcode-select --reset
        ❯ export SDKROOT="macosx"
        
        Maybe you don't have command line tools installed.
        Or maybe you messed up the $DEVELOPER_DIR environment
        variable path.
        Or maybe your compiling with command line tools meant
        for iPhone development or WatchOS !?!
        
        ❯ brew update && brew upgrade pyenv
        
        Maybe your command versions aren't up to date ?
        Double check you've properly followed the installation
        steps for your version, OS and shell.
        
        ❯ brew install make cmake;
        ❯ export PATH="/usr/local/opt/make/libexec/gnubin:$PATH"
        
        Maybe you don't have `make` and `cmake` build/compilation commands.
        Or maybe they can't be found.
        
        ❯ brew install openssl readline tcl-tk sqlite3 xz zlib bzip2;
        ❯ export PATH="/usr/local/opt/bzip2/bin:$PATH";
        export CPPFLAGS="\
            -I$(xcrun --show-sdk-path)/usr/include \
            -I$(brew --prefix openssl)/include \
            -I$(brew --prefix readline)/include \
            -I$(brew --prefix zlib)/include \
            -I$(brew --prefix bzip2)/include";
        export LDFLAGS="\
            -L$(xcrun --show-sdk-path)/usr/lib \
            -L$(brew --prefix openssl)/lib \
            -L$(brew --prefix readline)/lib \
            -L$(brew --prefix zlib)/lib \
            -L$(brew --prefix bzip2)/lib";
        
        Maybe you're missing some suggested `pyenv` build,
        tools or what not. Or maybe they can't be found during
        compilation.
        https://github.com/pyenv/pyenv/wiki#suggested-build-environment
        
        ❯ unset LIBRARY
        
        Maybe you've set/defined a LIBRARY environment variable
        (either in your shell initialization/startup files,
        e.g. .bashrc, .zshrc, etc; or shell session).
        This can be bad because it could be used in the build/compilation
        process and may crash it.
        
        ❯ pyenv install --verbose --patch 3.8.11 \
            < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
        
        Maybe you haven't heard of the magical patch yet ?
        which fixes issue with build process not taking into
        account certain MacOS versions.
        Also using the `--verbose` option, might give you
        better hints as to what's going wrong.
        

        ❯ pyenv global 3.8.11 && eval "$(pyenv init -)"
        OR  
        ❯ pyenv global 3.8.11 && exec $SHELL --login
        
        Also, don't forget to set your preferred global
        python interpreter version and reinitialize `pyenv`
        or restart your [login] shell altogether.
        

        它可能仍然不起作用,在这种情况下,请继续查找并在找到答案后发布您的答案。最好的祝福。

        以下是我查阅过的一些资源:

        【讨论】:

          【解决方案11】:
          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.12 < <(curl -sSL 
          https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
          

          更改您想要的版本

          【讨论】:

            【解决方案12】:

            在建议应用此补丁的 pyenv 问题跟踪系统上发表评论后解决了同样的问题:https://github.com/python/cpython/commit/8ea6353.patch

            # original comment
            pyenv install --patch 3.8.3 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch)
            

            它也适用于 3.6.9 和 3.7.4 版本,例如

            pyenv install --patch 3.6.9 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch)
            

            来源:https://github.com/pyenv/pyenv/issues/1738#issuecomment-880517959

            【讨论】:

              【解决方案13】:

              对于最近的 googler,如果您正在使用 Big Sur,您应该运行命令

              xcode-select --install
              

              【讨论】:

              • 这在许多其他答案中已经提到过。 在回答已有答案的旧问题时,请确保提供新颖的解决方案或比现有答案更好的解释。
              【解决方案14】:

              我遇到了同样的错误,这个命令对我有用,注意你需要在 --patch 之后将 python 版本更改为你想要安装的版本

              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.8.0 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
              

              【讨论】:

                【解决方案15】:
                BUILD FAILED (OS X 10.14.3 using python-build 20180424)
                
                Inspect or clean up the working tree at /var/folders/kt/79hj2dxs5vg7gsy188n6tk9c0000gn/T/python-build.20190226112205.71745
                Results logged to /var/folders/kt/79hj2dxs5vg7gsy188n6tk9c0000gn/T/python-build.20190226112205.71745.log
                
                Last 10 log lines:
                  File "/private/var/folders/kt/79hj2dxs5vg7gsy188n6tk9c0000gn/T/python-build.20190226112205.71745/Python-3.6.6/Lib/ensurepip/__main__.py", line 5, in <module>
                    sys.exit(ensurepip._main())
                  File "/private/var/folders/kt/79hj2dxs5vg7gsy188n6tk9c0000gn/T/python-build.20190226112205.71745/Python-3.6.6/Lib/ensurepip/__init__.py", line 204, in _main
                    default_pip=args.default_pip,
                  File "/private/var/folders/kt/79hj2dxs5vg7gsy188n6tk9c0000gn/T/python-build.20190226112205.71745/Python-3.6.6/Lib/ensurepip/__init__.py", line 117, in _bootstrap
                    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
                  File "/private/var/folders/kt/79hj2dxs5vg7gsy188n6tk9c0000gn/T/python-build.20190226112205.71745/Python-3.6.6/Lib/ensurepip/__init__.py", line 27, in _run_pip
                    import pip._internal
                

                我找到了解决方案 http://digidememory.blogspot.com/2019/01/macos-mojave-10142python371.html

                就我而言,我通过这个命令解决了

                sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
                

                【讨论】:

                • 我在我的 M1 芯片 Mini 上尝试了所有这些,但都没有工作。
                【解决方案16】:

                这对我有用:

                1. 删除 /Library/Developer 下的 CommandLineTools 文件夹
                2. 在终端运行:xcode-select --install
                3. sudo mv /usr/local/include /usr/local/include_old

                【讨论】:

                • 可能有效,但破坏性极强,最终可能会给您带来更多问题...
                • 这是唯一对我有用的选项,但要小心 - 执行此步骤后,您需要重新创建 include 目录,然后从 brew 开始重新安装所有内容。谢谢@Tomer,这让我免于重新安装操作系统!
                • 另外,我在 CommandLineTools 下没有 Packages 文件夹
                猜你喜欢
                • 1970-01-01
                • 2020-06-13
                • 1970-01-01
                • 2023-04-04
                • 2021-06-29
                • 2023-02-04
                • 1970-01-01
                • 2021-03-23
                • 1970-01-01
                相关资源
                最近更新 更多