M1 Macでpyenvのインストールに手こずった話

Others

プロジェクトごとにpythonのバージョンを切り替えたいと思い、M1 Macにpyenvをインストールしようと思ったところ、色々手こずりました。これは全く最適解ではないですが、取り急ぎインストールできた方法を記載してみたいと思います。何が起こっても責任は取れないため、実行は自己責任でお願いします。。ちなみに、私は、macOS 12.2.1を使用しています。

pyenvインストール

失敗したやり方

まずは、下記のREADMEに記載の方法でやってみました。

GitHub - pyenv/pyenv: Simple Python version management
Simple Python version management. Contribute to pyenv/pyenv development by creating an account on GitHub.
% brew install pyenv
(--- snip ---)
Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)!
Please create a new installation in /opt/homebrew using one of the
"Alternative Installs" from:
  https://docs.brew.sh/Installation
You can migrate your previously installed formula list with:
  brew bundle dump
%

成功したやり方

homebrewが/opt配下にインストールされるべきところ、/usr/local配下にインストールされているようでした。記憶にないのですが、どうやらRosetta(Intel互換モード)で動作しているターミナルでインストールしたため、M1版ではなく、Intel向けのhomebrewがインストールされていたようです。

% which brew
/usr/local/bin/brew

M1対応版のhomebrewをインストールし直せば良いのですが、下記方法でこのままでもpyenvがインストールできたので、載せておきます。Rosettaを使用してターミナルを開き直し、brew install pyenvを実行してもうまく行ったと思いますが、arch -x86_64を頭につけることでターミナル開き直さず、Rosettaでコマンド実行ができました。

% arch -x86_64 brew install pyenv

参考

こちらのリンク先を参考にさせて頂きました。

Pythonインストール

pythonインストール前にREADMEに記載の通り、下記を実行しました。

% echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
% echo 'eval "$(pyenv init -)"' >> ~/.zshrc
% 
% arch -x86_64 brew install openssl readline sqlite3 xz zlib

失敗したやり方①

そして、素直にpyenv installを実行したら、またエラーに引っかかりました。

% pyenv install 3.8.13
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems

失敗したやり方②

エラーメッセージに記載のwikiを参考に下記を実行しましたが、また別のエラーで失敗しました。

% which openssl
/usr/local/opt/openssl@1.1/bin/openssl
% 
% CONFIGURE_OPTS="--with-openssl=/usr/local/opt/openssl@1.1" pyenv install -v 3.8.13

configure: error: Unexpected output of 'arch' on OSX
make: *** No targets specified and no makefile found.  Stop.

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

成功したやり方

結局こちらもarch -x86_64を頭につけることでインストールできました。早く気がつけという感じなのですが、こちらもRosettaを使用して実行しないといけなかったです。

% arch -x86_64 pyenv install -v 3.8.13
% pyenv versions
* system (set by /Users/****/.pyenv/version)
  3.8.13
% 

versionの切り替え

無事複数バージョンインストールできたので、プロジェクトごとにバージョンを切り替えられるようにします。対象プロジェクトに移動し、pyenv localを実行します。

% cd test1

% python --version
Python 2.7.18
% pyenv versions
* system (set by /Users/****/.pyenv/version)
  3.10.3
  3.8.13
  3.8.7
% pyenv local 3.10.3

(ターミナル開き直す)

% python --version
Python 3.10.3
% pyenv versions
  system
* 3.10.3 (set by /Users/****/Documents/test1/.python-version)
  3.8.13
  3.8.7
%

最後に

もはやM1版のhomebrewをインストールし直すところから始めた方が早かったかもしれません。。今手こずっている方の参考になれば幸いです。

コメント

タイトルとURLをコピーしました