brew pyenv を消して anyenv の pyenv で Python をインストールしようとしたら BUILD FAILED
というエラーが出るようになってしまった…
環境
- MacOS Big Sur (
11.6.1
) - anyenv
1.1.2
- pyenv
2.2.3-1-g423de9ae
結論
- Xcode のバージョンが古かったので最新の v13.1 入れ直したらエラー pyenv 経由での Python がビルドできるようになった
- anyenv 内の pyenv 内の python が使われるようにするには
.zshrc
にeval "$(pyenv init --path)"
が必要だった
brew pyenv から anyenv の pyenv に乗り換える
pyenv でインストールしたバージョンを削除
$ pyenv versions $ pyenv uninstall <VERSION>
brew でインストールした pyenv を削除
$ brew uninstall pyenv
Users/USER_NAME/.pyenv
フォルダを削除
.zshrc
から brew pyenv へのパスを削除
- export PYENV_ROOT="$HOME/.pyenv" - export PATH="$PYENV_ROOT/bin:$PATH" - eval "$(pyenv init -)"
anyenv pyenv をインストール
$ anyenv install pyenv Install pyenv succeeded! Please reload your profile (exec $SHELL -l) or open a new session. # シェルを再起動 $ exec $SHELL -l # pyenv の確認 $ pyenv -v pyenv 2.2.3-1-g423de9ae
anyenv の pyenv でインストールしようとしたらビルドでエラーになる
$ pyenv install 3.10.1 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.1 using python-build 2.2.3-1-g423de9ae) …
なんらかの原因で python-build がコケてしまうっぽい。
X code をアップデートする
- Download and install the latest Xcode 12 beta
- Go to > Preferences > Locations > Command Line Tools > Choose Xcode 12.0.
cf. Unable to build Python on macOS Big Sur with Xcode 12 beta · Issue #1643 · pyenv/pyenv · GitHub
GitHub の issue にあったコメントには Xcode 12.0 と書かれてましたが現在の最新は 13.1 で、local に入っている Xcode は 11.5 でした。
Xcode (11.5
) 経由で使っている zlib が怪しいっぽいので、手っ取り早く Xcode を v13.1 にアップデートします。
https://developer.apple.com/download/all/ から最新の X code をダウンロードする。(サイズでかい…)
# シェルを再起動 $ exec $SHELL -l # pyenv でのインストールを再挑戦 $ pyenv install 3.10.1 python-build: use openssl@1.1 from homebrew python-build: use readline from homebrew Downloading Python-3.10.1.tar.xz... -> https://www.python.org/ftp/python/3.10.1/Python-3.10.1.tar.xz Installing Python-3.10.1... python-build: use tcl-tk from homebrew python-build: use readline from homebrew python-build: use zlib from xcode sdk Installed Python-3.10.1 to /Users/kikiki/.anyenv/envs/pyenv/versions/3.10.1 $ pyenv versions * system (set by /Users/USER_NAME/.anyenv/envs/pyenv/version) 3.10.1 $ pyenv global 3.10.1
₍ ᐢ. ̫ .ᐢ ₎ よし
pyenv global が効いてない
pyenv global で設定した Python が設定されていることを確認するために別途ターミナルを開いてみた所…
$ python --version Python 2.7.16 $ pyenv versions system * 3.10.1 (set by /Users/USER_NAME/.anyenv/envs/pyenv/version) $ which python /usr/bin/python
anyenv 内の pyenv ではなく local にデフォルトで入っていた Python が使われているようです…
なんでや工藤…
eval "$(pyenv init --path)"
が必要だった
homebrew の時は eval "$(pyenv init -)"
だったけど、anyenv の pyenv は eval "$(pyenv init --path)"
が無いとダメっぽい
.zshrc
に書きを追記します
# pyenv eval "$(pyenv init --path)"
$ exec $SHELL -l $ python --version Python 3.10.1 $ which python /Users/USER_NAME/.anyenv/envs/pyenv/shims/python
₍ ᐢ. ̫ .ᐢ ₎ 今度こそよし!!!
所感
教訓。
年末年始の忙しい時にスナック感覚で折角だから〜と環境大掃除しようとすると死ぬ。
[参考]