M2 MacBook の Python 環境をととのえるのがむずかしい. ときどき Arm64 と X86_64 の環境が混在しているといわれて,import に失敗する.
一度はこの問題を解決していたはずなのだが,最近,MacBook の SSD を初期化する必要があったために,また復活してしまった. ようやくなおすことができたので,どうやってなおしたのか,ここに書いておくことにする.
PIL または Pillow といわれる画像処理のライブラリがある. Python 専用ではないが,Python でつかうひとが多いとかんがえられる. これをインストールするとき,つぎのようなコマンドをつかいがちだが,これで失敗する.
pip install Pillow # または pip3 install Pillow
M2 Mac であり,Python は Arm64 用のがインストールされているので,上のコマンドによって当然 M1/M2 用のライブラリがインストールされるとかんがえてのことだ. しかし,どうもそれとはちがって,x86_64 用がインストールされたようだ. さらに,この状態で PIL とともにつかう imagehash というライブラリをインストールしたが,これも x86_64 用がインストールされたようだ (このあたり,記憶にたよって書いているので,すこしちがうかもしれない).
この状態で PIL や imagehash を import すると,エラーがでて実行できない. PIL に問題があることがわかったので,それをインストールしなおした.
pip uninstall pillow arch -arm64 pip install pillow
しかし,それだけでは解決しなかった.PIL はつかえるが imagehash がつかえない. imagehash を単純にインストールしなおしてもうまくいかない. ChatGPT に解決策をきいた結果,つぎのように Python をインストールしなおせばよいことがわかった.
brew install python pip install imagehash
M1/M2 Mac は高速かつ低消費電力でありがたいが,こういうめんどうな問題がある.