Apple Silicon (M1) Mac で Python 環境を作る

※ Tensorflow を使う場合は特殊な手順が必要なので、このページの手順ではなく Tensorflowの環境を作る(miniforge編) を参照してください。

 

このページでは Apple Silicon Mac のネイティブ環境(Rosettaを使わない、ARM64の環境)に Python をインストールする手順を説明します。Python のバージョンは少なくとも Python 3.9 か、より新しいものを推奨します。numpy 等、Python のいくつかのライブラリは Python 3.9 以降でしか Apple Silicon Mac のネイティブ環境に対応していないためです。

ただし、作ったプログラムをデプロイするサーバーの環境によっては、Python 3.8 以前のバージョンでないと動作しない場合もあります。(例えば、AWSのElasticBeanstalk) このように、動作させる環境と Python のバージョンが密接に関係するところが Python の難しいところです。

 

Python のインストール

Homebrew

brew コマンドを使いますので、Homebrew をまだインストールしてない場合はこの記事「Macの環境設定」の中の「Homebrew」を参照してインストールしてください。

 

pyenv

Python のバージョン云々の話には必ず登場する pyenv もインストールしましょう。まだインストールされていなかったら次のコマンドでインストールします。

インストールできたら pyenv を有効にするため、ホームディレクトリの .zshrc に次の3行を追加します。もし bash を使っていたら .bashrc に追加してください。

ターミナルソフトを再起動するか、”source ~/.zshrc” コマンドを実行すれば追加した内容が反映されます。

 

Python 本体のインストール

pyenv を使って Python をインストールすると、異なるバージョンの Python を同じパソコンの中に共存させることができます。次のコマンドを実行すると pyenv でインストール可能なバージョンが一覧表示されます。

長いリストが表示されますが、先頭付近に表示される、数字のバージョン名のものが標準的な Python です。どのバージョンを使うかについては、授業や開発プロジェクトで指定されている場合はそのバージョンを使ってください。使用したいライブラリによって動作する Python バージョンが制限される場合もあります。

一般的には、なるべく新しい、しかし安定したバージョンを選択するべきでしょう。Python のバージョンは 3.xx.yy のような形式になっています。3.xx までがメジャーバージョン、yy がマイナーバージョンを示します。yy が少ししかない場合はそのバージョンはまだ成熟していないと判断できます。yy のバージョンがある程度進んでいるメジャーバージョンを選び、その中の最後の yy バージョンを使うのが無難です。

例として、3.11系列の最新版(2023年11月現在)の 3.11.6 を使うことにします。

 

仮想環境の作成

当サイトでは度々登場しますが、virtualenv を使って Python の仮想環境を作ります。virtualenv をインストールします。

virtualenvの使い方をまとめておきます。

virtualenv –version  (”-” は2個) バージョンの確認
virtualenv [作成する環境名] 仮想環境の作成
source [環境名]/bin/activate 仮想環境の有効化
deactivate 仮想環境の無効化(元に戻る)

Python を使う目的や開発プロジェクトに応じて、専用のディレクトリを作成してください。その作業ディレクトリに移動し、次のコマンドを実行してください。環境名は自由に決めることができます。ここでは env としました。sourceコマンドは環境名に応じて実行してください。

この状態で pip3 コマンドを使ってライブラリをインストールすると、この環境にだけインストールされ、他の環境には影響を及ぼしません。

 

各種ライブラリのインストール

試しによく使うライブラリをインストールしてみます。必要に応じて実行してください。

numpy
 

pandas
 

scikit-learn
これは “Requirement already satisfied” と表示されました。どうやら pandas と一緒にインストールされるようです。

 

matplotlib
 

Django

よく使うのは以上だと思います。筆者はDjangoを触っているので引き続き試してみます。

Django 4.0.5 が入りました。

その他 Django 関連
順調に終わりました。Djangoも正常に動きます。ところが、ここで問題発生。AWSのElasticBeanstalkにデプロイしようとしたらPython3.6/3.7/3.8しかサポートされていません。しょうがないので、この手順の最初に戻ってPython3.8でやり直しました。

実はAWSにDjangoをデプロイするときにSQLite3との不整合があってPython3.8を諦めた経緯がありました。(参考) 現在はSQLite3ではなくAWSのRDSを使用しているのでこの問題を回避できています。

コメント