M1 MacでのPython開発環境構築における選択肢(Apple Silicon)
Apple siliconに憧れてM1 Macbook Airを買ってみたものの、これがなかなか曲者でした。プログラミングの勉強・開発環境としては、無難にwindowsかIntel macの方が良いかもしれません。他プログラミング言語については詳しくないのでわかりませんが、Pyhonの開発環境としてM1 Macで考えられる選択肢とその構築方法をまとめておきます。
M1 macでのPython開発環境の選択肢
ざくっと調べた感じだと、以下3つが現在(2021年9月)の主な選択肢のです。
- Homebrewでインストールする
- Anaconda環境(miniforge)を使う
- Dockerを使う
M1 Macでの環境構築がややこしいの原因は、Apple siliconではCPUアーキテクチャ(命令系統の設計)として、従来のintel x86系と異なりArmアーキテクチャが使用されていることです。これについて下の記事などを読むとイメージかつかめます。
ITエンジニアの豆知識 CPUのアーキテクチャって?
ARM版 M1 プロセッサ搭載 mac は インテル版と何が変わるのか
Homebrewで直接pythonをインストールする
macOS(またはLinux)用パッケージマネージャー「Homebrew」を使ってpythonをインストールする方法です。
・メリット
MacOS環境でのデファクトスタンダードなツールなので取っ付きやすい
・デメリット
PythonのパッケージによってはM1のArmアーキテクチャに対応済みのもの、Rosetta上でしか動かないものがあり、パッケージをインストールするたびに逐一確認する必要があるため、運用には注意が必要
僕はやったことはありませんが、以下の方が簡潔にまとめられています。
Rosetta 2は、従来のIntel Mac用のバイナリをArmベースのM1 Macでも動くようにさせるためのエミュレーションソフト
Rosetta 2 を調べてわかった Apple M1 が速い秘密
Anaconda環境(miniforge)を使う
Anaconda はデータサイエンス向けの環境を提供するプラットフォームです。科学技術計算などを中心とした、多くのモジュールやツールのコンパイル済みバイナリファイルを提供しており、簡単にPythonを利用する環境を構築できます。
m1 macではMiniconda(Anacondaの最小構成版: 参考 AnacondaとMinicondaの比較)のフォークであるminiforgeを使います。
・メリット
環境構築がかんたんで、仮想環境管理もできる。armネイティブで高速。
pythonパッケージのM1対応を気にしなくて良い。
・デメリット
condaリポジトリにない(miniforgeでインストールできない)パッケージをpypi(pip)で入れると、予期せぬ衝突によって環境が破壊され、再インストールが必要になる可能性がある(参考: condaとpip:混ぜるな危険)
こちらは以下の記事(+動画)が大変参考になりました。
さまざまなCPUアーキテクチャ(intelのx86_64やppc64le、Apple M1を含むaarch64)のサポートに重点を置いたMiniconda。
Dockerを使う
Dockerコンテナ上にpython環境を作る方法です。
・メリット
環境ごとにコンテナを作れば衝突の心配がない。
pythonパッケージのM1対応を気にしなくて良い。
・デメリット
Dockerの学習コスト。処理によっては上に2つと比べると遅い。
方法はこちらにまとめました。
まとめ
現実的には「Anaconda環境(miniforge)を使う」か「Dockerを使う」になるかなと思います。まずはminiforgeでやってみて、不都合があればDockerを使い始めれば良いでしょう。他にベターな方法があればぜひ教えて下さい。
コードを実行するだけならGoogle Colaboratoryもありですが、環境構築とは言えないので割愛しました。
ディスカッション
コメント一覧
まだ、コメントがありません