「mac でpyenv install 3.7.2 するとError」の対処方法

pyenv install したらこんなエラーが出ました。

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

BUILD FAILED (OS X 10.14.6 using python-build 1.2.9-16-g9baa6efe)  

Inspect or clean up the working tree at /var/folders/bl/83c0cg3s4ks883p7pw62n96r0000gn/T/python-build.20200229194728.98086  
Results logged to /var/folders/bl/83c0cg3s4ks883p7pw62n96r0000gn/T/python-build.20200229194728.98086.log  

Last 10 log lines:  
checking for python... python  
checking for --enable-universalsdk... no  
checking for --with-universal-archs... no  
checking MACHDEP... checking for --without-gcc... no  
checking for --with-icc... no  
checking for gcc... clang  
checking whether the C compiler works... no  
configure: error: in `/var/folders/bl/83c0cg3s4ks883p7pw62n96r0000gn/T/python-build.20200229194728.98086/Python-3.7.2':  
configure: error: C compiler cannot create executables  
See `config.log' for more details  

解決方法

私の場合は以下でInstall出来るように直りました。

% brew install llvm zlib  
% exec $SHELL -l  

% export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib"  
% export CPPFLAGS="-I/usr/local/opt/zlib/include"  

※ 上記のFLAGSは、rc ( run commands ) file (e.g. ~/.zshrc)に入れても良いです

% pyenv install 3.7.2  

補足

調べると以下の人たちと同じ症状でした。
https://github.com/pyenv/pyenv/issues/1348#issuecomment-499325014

SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk MACOSX_DEPLOYMENT_TARGET=10.14 PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.7.2  

とかでも入りそうですが、試していません。
pyenv installするたびにこれら環境変数を指定するのも嫌だし、 OS version が変わるたびに指定するのも嫌なので、例えば~/.zshenvや profile.d/ 等にfileを作って以下のように sw_vers -productVersion | perl -lne '/(\d{2}\.\d{2}).\d+$/ and print $1' で mac OS X のメジャーバージョンを取得するようにしておいたら良いかもしれませんが、またmac OS XやXcode側の状況が変わってしまい使えなくなる懸念もあります。

🆗 ☀️ 🍺    ~  
% echo $SDKROOT  

🆗 ☀️ 🍺   ~  
% cat >>~/.zshenv<<'EOF'  
OS_MAJOR_VER=$(sw_vers -productVersion | perl -lne '/(\d{2}\.\d{2}).\d+$/ and print $1')  
MACOSX_DEPLOYMENT_TARGET=$OS_MAJOR_VER  
SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_MAJOR_VER}.sdk  
PYTHON_CONFIGURE_OPTS="--enable-framework"  
EOF  
🆗 ☀️ 🍺   ~  
% exec $SHELL -l  
🆗 ☀️ 🍺   ~  
% echo $OS_MAJOR_VER  
10.14  
🆗 ☀️ 🍺   ~  
% echo $SDKROOT  
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk  
🆗 ☀️ 🍺    ~