Open1

pythonのpyenv install で BUILD FAILED

nucl_quantumnucl_quantum

目的

python3系を使いたい。

結論(仮)

python3と入力して起動すればおk

$ python3

環境

macOS: 11.6

$ brew --version
>>> Homebrew 3.2.15

$ python -V
>>> Python 2.7.16

$ pyenv --version
>>> pyenv 2.1.0

$ pyenv versions
>>> pyenv: version `anaconda3-4.0.0' is not installed (set by /Users/[user name]/.python-version)
>>> system
#system にアスタリスクついてないけど大丈夫かな?

$ pyenv install --list
>>> #3.x.xなど
>>> 3.8.0 #今回これを入れてみる

$ echo $SHELL
>>> /bin/bash

$ bash --version
>>> GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin20)
>>> Copyright (C) 2007 Free Software Foundation, Inc.

試したこと&エラー

try 1

とりあえず、普通にinstallしてみたら、BUILD FAILED というエラー

$ brew install 3.8.0
>>>
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.0.tar.xz...
-> https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
Installing Python-3.8.0...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk

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

Inspect or clean up the working tree at /var/folders/dm/02xx63wn2pv9sz_m4hmt4t1w0000gn/T/python-build.20211007170953.59949
Results logged to /var/folders/dm/02xx63wn2pv9sz_m4hmt4t1w0000gn/T/python-build.20211007170953.59949.log

Last 10 log lines:
checking for python3... python3
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "darwin"
checking for gcc... clang
checking whether the C compiler works... no
configure: error: in `/var/folders/dm/02xx63wn2pv9sz_m4hmt4t1w0000gn/T/python-build.20211007170953.59949/Python-3.8.0':
configure: error: C compiler cannot create executables
See `config.log' for more details
make: *** No targets specified and no makefile found.  Stop.

try 2

ググると、以下の記事に、
https://www.setoya-blog.com/entry/2021/05/06/160340

#!/bin/bash
echo "Installing Dependencies"
brew install zlib
brew install sqlite
brew install bzip2
brew install libiconv
brew install libzip
echo "Done!"
echo
echo -e "Setting Environment Variables"
export SYSTEM_VERSION_COMPAT=1
export LDFLAGS="${LDFLAGS} -L/usr/local/opt/zlib/lib"
export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/zlib/include"
export LDFLAGS="${LDFLAGS} -L/usr/local/opt/sqlite/lib"
export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/sqlite/include"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH} /usr/local/opt/zlib/lib/pkgconfig"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH} /usr/local/opt/sqlite/lib/pkgconfig"
echo "Done!"
echo
echo "Installing Python 3.8.5"
pyenv install 3.8.5
echo "Done!"
exit 0

を追加すると良い、と書いてあった。しかし、どこに書けばいいか不明
とりあえず~/.badh_profileに追加して実行してみたがエラー

$ pyenv install 3.8.0
>>> # try1 と同じエラー

try 3

次にこの記事に従い、brew install zlibをやってみるが、失敗
https://qiita.com/kzrashi/items/80ff82d4330d51a398dc

$ brew install zlib
$ echo 'export LDFLAGS="-L/usr/local/opt/zlib/lib"' >> ~/.bash_profile
$ echo 'export CPPFLAGS="-I/usr/local/opt/zlib/include"' >> ~/.bash_profile
$ echo 'export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig"' >> ~/.bash_profile
$ source ~/.bash_profile

$ pyenv install 3.8.0
>>> # try1 と同じエラー

try 4

以下の記事を参考に、bashrcに書き込みをする。
pyenv: 1.2.21の対応策だから、望み薄いが...
https://child-programmer.com/pe-bs-2021/

書き込み後、上記の記事に従い、以下を実行
結果、失敗に終わるorz

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

$ pyenv install 3.8.0
>>> # try1 と同じエラー

try 5

pyenv 2.1.0 build failedとpyenv のバージョンを指定してググってみると、以下の記事がヒット。
https://it-jog.com/py/intro/pyenvsetting

PATHの設定と再起動をやってみる (再起動をうまくやってなかったので、失敗していたのか?)

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

$ exec $SHELL -l

exec $SHELL -lを実行した後、[プロセスを完了しました]と表示されたので、次にどうすれば?となった(笑)

以下の記事を参考に
https://bacchi.me/mac/terminal-troubleshoot/
ターミナルの「シェル」→「新規コマンド」で /bin/sh と入力して、

mv .bash_profile .bash_profile_`date +%F`

を実行したら直った。

pyenv versionを確認すると

$ pyenv versions
>>> pyenv: version `anaconda3-4.0.0' is not installed (set by /Users/Asahi/.python-version)
>>>  system
>>>  3.8.5 #←入った!

3.8.5を入れることに成功(祝)

しかし、、、

$ pyenv global 3.8.5
>>> pyenv: version `anaconda3-4.0.0' is not installed (set by /Users/Asahi/.python-version)
>>> system
>>>  3.8.5

環境を切り替えることには失敗 orz
anaconda3が悪さをしてるみたいだけど,,,

$ pyenv version
>>> pyenv: version `anaconda3-4.0.0' is not installed (set by /Users/Asahi/.python-version)

どうやって直すか調査中
(anaconda uninstallしたんだけど、pyenvにまだ影響あたえてるのかな ...)