50 votes

erreur pyenv zlib sur MacOS :

Mon objectif

J'essaie d'installer Python 2.7.5 et 3.6.5 côte à côte sur mon MBP avec pyenv.

pyenv Installation

Suivant Comment puis-je utiliser Homebrew pour installer à la fois Python 2 et 3 sur Mac ? J'ai essayé :

$ pyenv install 3.6.5

Qui a fait une erreur :

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

Ce que j'ai essayé

  • Installation de zlib : brew install zlib

Ma question

Comment puis-je installer plusieurs environnements Python avec pyenv sur MBP ?

105voto

samsin Points 1116

Sur Mojave, après avoir installé les outils de ligne de commande Xcode, j'ai dû exécuter ce qui suit :

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

2 votes

Merci @samsin. Cela a résolu le problème pour moi, après avoir passé des heures dessus. L'OP aurait dû le marquer comme étant la bonne réponse.

1 votes

Merci, cette réponse est vraiment utile, la plupart des autres commentaires reflètent le problème pour Mac OS avant Mojave.

2 votes

Puis-je vous demander comment diable vous avez réussi à faire ça @samsin ?

40voto

James Zaghini Points 1118
brew install zlib
export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"
pyenv install 3.7.2

La réponse de Samsin n'a pas marché pour moi. Je n'avais pas de Packages dir

8 votes

C'est ce que j'ai dû faire pour que "pyenv install" fonctionne sur Big Sur.

14voto

Vincent Gerris Points 925

Sous MacOS 11.1 (Big Sur), j'ai fini par en avoir besoin :

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

J'ai ajouté les commandes d'exportation dans ./bash_profile pour que la prochaine fois, je puisse utiliser pyenv si je dois installer d'autres versions.

Gardez un œil sur : https://github.com/pyenv/pyenv/issues/1643 qui suit cela, espérons que cela sera corrigé dans pyenv.

5voto

Martin Points 2681

J'ai essayé toutes les solutions proposées ici, sans succès.

C'est ce qui a fonctionné pour moi sur 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

La solution est tirée de cette phrase .

3voto

jayeff Points 476

Le wiki pyenv a une page spécifique pour les problèmes de construction courants. Il y a quelques solutions possibles mentionnées pour le erreur zlib manquante .

J'ai le même ZipImportError mais avec la commande suivante l'installation est réussie :

CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.6.5

0 votes

Cela fonctionne pour moi, merci

0 votes

Cela ne fonctionne pas sur MacOS 11.1 (Big Sur) pour moi avec Xcode 12.3. Des solutions de contournement peuvent être trouvées ici : github.com/pyenv/pyenv/issues/1643 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X