2
0

More than 3 years have passed since last update.

Big Surで "macOS 11 or later required !" が出たり、pyarrow2.0.0 がinstallできなかったりしたときの対処メモ

Last updated at Posted at 2021-01-14

はじめに

定期的にやってくる環境周りのトラブルですが、今回はMacのOSを Big Sur にUpgradeしたことに起因したものでした。

困ったことの要約

  • Big Sur で pyenv で python を使っていたら macOS 11 or later required ! という謎のエラーが出て pythonがcrashした
  • 上記はpython3.9.1 にすると解消するのだが、すると pyarrow が対応していなくて Installできない
  • grpcio が Installできない
  • numpy 周りでエラーになる!

ということが発生したので、そのworkaroundを書いておきます。
いずれ不要になるとは思いますが、今現在で言えば結構厄介です。

個々の対処法

macOS 11 or later required ! への対処

再現方法

こんな感じです。

% python -c "import tkinter; r = tkinter.Tk()"   
macOS 11 or later required !
zsh: abort      python -c "import tkinter; r = tkinter.Tk()"

Tkなんて使わないよ! と思うでしょうが、 matplotlib か何かが使おうとしたりします。
※ んーそれを回避した方が良かったかもしれないな...

対処法

(たぶん BigSurにしてから)pyenv経由でInstallしたようなPythonで発生していたようですが、 pythonを3.9.1にすることで解消されました。brew で pyenv を入れている場合は以下のような感じになります。

% brew install tcl-tk   #  これが必要なのか、は未確認ですがそう書いてあるところがあった
% brew upgrade pyenv
% pyenv install -l | grep 3.9  # 3.9系を探す
  3.9.0
  3.9-dev
  3.9.1
  miniconda-3.9.1
  miniconda3-3.9.1
% pyenv install 3.9.1    # 3.9.1 が一番新しいのでそれにする

治るか確認

% pyenv local 3.8.7  # エラーが出るVersion
% python -c "import tkinter; r = tkinter.Tk()"   
macOS 11 or later required !
zsh: abort      python -c "import tkinter; r = tkinter.Tk()"
% pyenv local 3.9.1
% python -c "import tkinter; r = tkinter.Tk()"   
### エラーが出ない! ###

python3.9系になんてできないときは...?

とは言っても、気軽に3.9系にUpdateできるプロジェクトばかりではないでしょうし、その場合は正規のInstaller経由でInstallしたPythonなら大丈夫だとかなんだとか(未確認)。

pyarrow2.0.0 が python3.9 に対応していない!

pyarrow は どうも pyathenapandas拡張 のようなライブラリから必要とされているようで、それらを使っていると影響を受けます。

普通に pip や poetry などではInstallできなかったので、3.8系のwheelを強引にInstallします(たぶんちゃんと動いている)。cp38 な部分を cp39にするとどうも良いらしい。酷い方法ですが、仕方ない...

% curl -LO https://files.pythonhosted.org/packages/14/75/9f116c8d0774ed170c59c87649d3e74dbdaf3318d72a09171c6f4634c7a7/pyarrow-2.0.0-cp38-cp38-macosx_10_13_x86_64.whl
% mv pyarrow-2.0.0-cp38-cp38-macosx_10_13_x86_64.whl pyarrow-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl
% pip install pyarrow-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl

これで、poetry や pipenv などで Installしようとしても既にInstall済みなので何もされずエラーにならなくなります。

grpcio が Installできない

BigSur周りのトラブルの初期に出くわしたので、どういう発生条件か忘れてしまいましたが、これも事前に以下のようにして入れておくと良かったです。

% pip install --upgrade pip setuptools wheel
% pip install --no-cache-dir --force-reinstall -Iv grpcio==1.34.0

numpy 周りでエラーになる!

どうも Accelerator がどうとか、そういう理由でエラーになるようでした。
Install時ではなく、実行時にエラーになるのでちょっと性質が悪いです。
こんな感じでInstallしておくことで、回避できました。

% brew install openblas
% OPENBLAS="$(brew --prefix openblas)" pip install numpy

まとめると

最近は poetry で 管理していますが、結局こんな手順でInstallしておくとなんとか通りました。

% pyenv local 3.9.1
% poetry run pip install --upgrade pip setuptools wheel
% poetry run pip install --no-cache-dir --force-reinstall -Iv grpcio==1.34.0
% curl -LO https://files.pythonhosted.org/packages/14/75/9f116c8d0774ed170c59c87649d3e74dbdaf3318d72a09171c6f4634c7a7/pyarrow-2.0.0-cp38-cp38-macosx_10_13_x86_64.whl
% mv pyarrow-2.0.0-cp38-cp38-macosx_10_13_x86_64.whl pyarrow-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl
% poetry run pip install pyarrow-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl
% OPENBLAS="$(brew --prefix openblas)" poetry install

さいごに

ビルドエラーとか人類の時間を奪う敵だと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0