忙しい人向け
細かいことはいいから結論が知りたい人向けに先に結論を記載します。
解決法3 xcode-betaのインストールと適用 で筆者は解決しました。
はじめに
久々にPythonで遊ぼうと思ってpyenvでPython3系をインストールしようと思ったらハマって1時間かかったのでメモとして残します。
開発環境
- OS: macOS Big Sur 11.2
- pyenv: 1.2.22
事象
$ brew install pyenv
実行後にバージョンを指定してPythonをインストールしようとするとタイトルのエラーが発生
します。
筆者の場合は3.9.1をインストールしようとしてエラーになりました。
$ pyenv install 3.9.1
~中略~
BUILD FAILED (OS X 10.15.7 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/k6/z1nv88hn50lbyt0jk334wlqr0000gn/T/python-build.20210208220628.20206
Results logged to /var/folders/k6/z1nv88hn50lbyt0jk334wlqr0000gn/T/python-build.220210208220628.20206.log
Last 10 log lines:
checking for python3.9.1... python3.9.1
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/k6/z1nv88hn50lbyt0jk334wlqr0000gn/T/python-build.20201015235728.20206/Python-3.9.1':
configure: error: C compiler cannot create executables
See `config.log' for more details
エラーは解決後に再現できなかったのでうろ覚えだがこんな感じだったはず...!
対処法
その1 pyenvを再インストールしてみる
色々調べてみるとpyenvを再インストールすることで解決した事例もあるようなので半信半疑で試してみる
$ brew uninstall pyenv
$ brew install pyenv
$ pyenv install 3.9.1
~中略~
configure: error: C compiler cannot create executables
See `config.log' for more details
まあそりゃそうだよねー。
解決するはずもないので対処法2へ
対処法2 command line tools for xcode の確認
なんとなくエラー文から推測するにCコンパイラがおかしそうなので、command line tools for xcodeが入っているかと、xcodeが最新版になっているかを確認してみる。
$ xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
$ softwareupdate --list
Software Update Tool
Finding available software
No new software available.
コマンドラインツールはちゃんと入ってる(brewが動いているので当然ではあるが)し、
Xcodeのアップデートも確認したが最新版になっている。
念の為macOSのアップデートも確認したが、(2020/02/09現在)最新版になっている。
解決しないので解決法3へ
解決法3 xcode-betaのインストールと適用
最終的にこちらの
Python 3.9.0、3.8.6を pyenv を使って macOS BigSur にインストールする
を参考にして解決しました!
色々調べてみるとどうやらmacOSのバージョンが新しすぎてXcodeが対応していない(ここの理解は自信ないので間違っていればコメントで補足ください)ようなので、上の記事を参考にXcodeのベータ版を入れて対応する。
- Beta Software Downloads よりXcode-betaのダウンロードをする。(要Apple ID)
- 1でダウンロードしたXcode-betaを開き、Prefarence->Locationsへ
- Command Line Tools を1でダウンロードしたバージョンに変更
ここまでできたら
$ LDFLAGS="-L$(xcrun --show-sdk-path)/usr/lib" pyenv install 3.9.1
とやれば
$ pyenv versions
system (set by /usr/local/var/pyenv/version)
3.9.1
$ pyenv global 3.9.1
$ zsh -l
$ python --version
Python 3.9.1
結果
無事Python3系がインストールできた
参考
Python 3.9.0、3.8.6を pyenv を使って macOS BigSur にインストールする
Macのpyenvでconfigure: error: C compiler cannot create executables