遭遇したエラー
pyenv install 3.7.5を実行したところ、以下のエラーがでた。
Unexpected output of 'arch' on OSX
本記事ではこのエラー発生時に実施した対応について記載します。
環境
macOS Big Sur
ターミナル:amd64、x86_64
※共にHomebrewインストール済み
対応内容
エラー内容でググったところ、以下の記事がヒットしました。
https://qiita.com/tomtsutom0122/items/52487730001247fdc2c5
どうもpyenvがM1チップに対応していないことが原因で起きると記載されていました。
archコマンドでx86_64を指定してインストールコマンドを実行すればOKと書いてますが、私のMacにはx86_64のターミナルがあったので、こっちでインストールコマンドを実行しました。
【補足】
M1 Macでx86_64のターミナルを動かす手順は以下の記事が分かりやすいです。
ターミナルの設定をされてない方はこちらの記事を参照いただき、x86_64のターミナルを用意した後、下記内容を実施ください。
https://qiita.com/funatsufumiya/items/cec08f1ba3387edc2eed
今度は別のエラーが発生
x86_64のターミナルでインストールコマンドを実行すると、今度は以下のエラーが出ました。
implicit declaration of function 'sendfile' is invalid in C99
このエラー対応として、以下を実施しました。
zlib、bzipsの再インストール
.zshrcファイルを編集
①zlib、bzipsの再インストール
まず、上記2パッケージの再インストールを実施しました。
brew reinstall zlib bzip2
②.zshrcファイルを編集
.zshrcファイルを編集し、以下を追記しました。
export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/bzip2/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/bzip2/include"
export CFLAGS="\
-I$(brew --prefix openssl)/include \
-I$(brew --prefix bzip2)/include \
-I$(brew --prefix readline)/include \
-I$(xcrun --show-sdk-path)/usr/include" \
export 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.5 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)
参考資料