Python の macOS Big Surサポート

2020-12-24

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ではこの変更への対処 として、

  1. ビルド時のライブラリ検索方法の変更
  2. 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対応

持ってないので知りません。

Amazon.co.jpアソシエイト:
Copyright © 2001-2020 python.jp Privacy Policy python_japan