macOS Big Sur/Apple M1チップがリリースされて一月ほど経ちました。ようやくBig Sur環境を作ってみましたので、現時点(2020/12/24)でのPythonのx64版Big Sur のサポート状況をまとめてみます。
TL;DR¶
まあ、いそいでBig Surにしないほうが良いかな…
Big SurをサポートするPythonバージョン¶
Python3.8以降はBig Sur/M1をサポートします。3.7以前はすでにセキュリティ問題のみの対処を行うモードに入っており、今後積極的に機能が追加されることはないでしょう。
一応、Python 3.7にはBig Sur用にビルドするためのパッチも一部取り込まれて おり、Python本体のビルドは可能です。しかし、Big Surで変更された共有ライブラリの問題 の対処は行われていませんので、Big Surでのビルド・実行は避けたほうが良いでしょう。
Big Surで変更された共有ライブラリへの対応¶
Big Surでは 共有ライブラリのインストール方法が変更されています。
Pythonではこの変更への対処 として、
- ビルド時のライブラリ検索方法の変更
- ctypes のライブラリ検索機能の変更
などが必要となっています。
最新のPython 3.8/3.9では、1. のビルド対応は環境しており、Big Sur環境でビルドできるようになっています。
2.のctypes対応はPython3.9では完了していますが、現在のPython3.8には取り込まれていません。次のリリース 3.8.8で取り込まれると思われます。
従来のインストーラとuniversal2インストーラ¶
Python.orgでは、Python3.9は従来のmacOSインストーラと、x64とApple Siliconをサポートする universal2インストーラ の両方を提供しています。
理由は不明ですが、従来のmacOSインストーラでは、この ctypes対応 を有効にするフラグが設定されておらず、ctypesでの共有ライブラリの検出が失敗する 場合があります。
universal2インストーラでは正しく設定されていますので正常に利用できますが、こちらはまだExperimental(実験段階)となっていますので、もしかしたらなにか問題があるかもしれません。
ctypesの設定は、sysconfig モジュールを使って、HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH
フラグで確認できます。
import sysconfig
sysconfig.get_config_vars('HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH')
>>> [1] # ctypesの対応が有効なら [1]、無効なら [0]または[None]となる
Homebrew版Python¶
現時点(2020/12/24)では、python@3.8
ではPython3.8.6、python@3.9
で Python3.9.1がインストールされます。
どちらも実行はできますが、手元の環境では tkinter
の設定に問題があるらしく、 Big Sur上で idle3
などを実行すると
macOS 11 or later required !
というメッセージを出力して終了してしまいます。
まだあまり使っていませんが、他には特に問題には遭遇しませんでした。
Apple Silicon対応¶
持ってないので知りません。