MacOS上的pyenv zlib错误:

Ada*_*tan 34 macos xcode zlib pyenv

我的目标

我正在尝试使用pyenv在我的MBP上并行安装Python 2.7.5和3.6.5.

pyenv 安装

以下如何使用Homebrew在Mac上安装Python 2和3?, 我试过了:

$ pyenv install 3.6.5
Run Code Online (Sandbox Code Playgroud)

哪个错误:

python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.5.tar.xz...
-> https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
Installing Python-3.6.5...
python-build: use readline from homebrew

BUILD FAILED (OS X 10.13.4 using python-build 20160602)

Inspect or clean up the working tree at /var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709
Results logged to /var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709.log

Last 10 log lines:
  File "/private/var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709/Python-3.6.5/Lib/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
  File "/private/var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709/Python-3.6.5/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709/Python-3.6.5/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/private/var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709/Python-3.6.5/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
Run Code Online (Sandbox Code Playgroud)

我试过了什么

  • 安装zlib: brew install zlib

我的问题

如何pyenv在MBP上安装多个Python环境?

小智 99

在Mojave上,安装Xcode命令行工具后,必须运行以下命令:

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

  • 2020 El Capitan 这个答案不再适用,/sf/answers/3846870051/ 是使用的解决方案! (3认同)
  • 谢谢@samsin。在花了几个小时之后,这为我解决了这个问题。OP 应该将其标记为正确答案。 (2认同)
  • 我能问一下你到底是怎么想出这样做的@samsin? (2认同)

Vin*_*ris 14

在 MacOS 11.1 (Big Sur) 上,我最终需要:

brew install bzip2
export LDFLAGS="-L $(xcrun --show-sdk-path)/usr/lib -L brew --prefix bzip2/lib"
export CFLAGS="-L $(xcrun --show-sdk-path)/usr/include -L brew --prefix bzip2/include"
pyenv install 3.9.0
Run Code Online (Sandbox Code Playgroud)

我在 ./bash_profile 中添加了导出命令,所以下次如果我需要安装更多版本,我可以只使用 pyenv。

请密切关注:https : //github.com/pyenv/pyenv/issues/1643跟踪此问题,希望这将在 pyenv 中修复。


Mar*_*tin 8

我尝试了这里所有的解决方案但没有成功。

这是在 MacOs 11.2.1 (Big Sur) 上对我有用的方法:

export MACOSX_DEPLOYMENT_TARGET=11.0
brew install pyenv bzip2 zlib xz openssl@1.1

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

## 3.6.12
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)

## 3.7.9
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 3.7.9
Run Code Online (Sandbox Code Playgroud)

解决方案就是从这个要点中得出的。


Jam*_*ini 6

brew install zlib
export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"
pyenv install 3.7.2
Run Code Online (Sandbox Code Playgroud)

萨姆森的答案对我不起作用。我没有Packages目录

  • 这就是我必须做的才能让“pyenv install”在 Big Sur 上运行 (8认同)