Ошибка Pyenv ZLIB на MacOS:
Моя цель
Я пытаюсь установить Python 2.7.5 и 3.6.5 параллельно на моем MBP с помощью pyenv.
pyenv
Монтаж
После Как я могу использовать Homebrew для установки Python 2 и 3 на Mac?, Я старался:
$ pyenv install 3.6.5
Который ошибся с:
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
Что я пробовал
- Установка zlib:
brew install zlib
Мой вопрос
Как я могу установить несколько Python среды с pyenv
на MBP?
10 ответов
На Mojave после установки инструментов командной строки Xcode пришлось выполнить следующее:
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
brew install zlib
export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"
pyenv install 3.7.2
Ответ Самсина не сработал для меня. У меня не было Packages
реж
В 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
Я добавил команды экспорта в ./bash_profile, поэтому в следующий раз я могу просто использовать pyenv, если мне нужно установить больше версий.
Следите за: https://github.com/pyenv/pyenv/issues/1643, который отслеживает это, надеюсь, это будет исправлено в pyenv.
Я попробовал все решения здесь безуспешно.
Вот что у меня сработало на 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
Решение взято из этой сути .
В вики pyenv есть страница, посвященная типичным проблемам сборки. Есть несколько возможных решений, упомянутых для отсутствующей ошибки zlib.
У меня тот же ZipImportError, но с помощью следующей команды установка прошла успешно:
CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.6.5
Убедитесь, что вы недавно открыли XCode и предоставили разрешения во время процесса первого открытия. Это решило это для меня. Понял идею от:
https://github.com/pyenv/pyenv/issues/2112#issuecomment-1265874025
Решение @mathsyouth сработало для меня, но мне пришлось добавитьarch -x86_64
перед командами.
Чтобы получить Python 3.8.6 с
tkinter
, Я основывался на ответе Винсента Герриса и этом сообщении в блоге и добился успеха с
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"
export PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6' --enable-framework"
pyenv install 3.8.6
Обновление XCode Tools сделало свое дело:
xcode-select --install
На macOS Big Sur (11.6.1) у меня работает следующее:
brew update
brew install bzip2
echo 'export PATH="/usr/local/opt/bzip2/bin:$PATH"' >> ~/.zshrc
export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"
pyenv install 3.8.6