macOS で Python の開発環境を構築する方法はいくつかあります.
(1) Anacoda をダウンロードしてインストールする方法が最も簡単です.デメリットは Anaconda が企業利用等では有償になってしまったこと,Python やライブラリのバージョンの切り替えが面倒なこと,M1 Mac (Apple Silicon) では TensorFlow が動作しないこと,などです.
(2) Intel Mac に pyenv をインストールすると,Python の仮想環境を構築することができます.これにより異なるバージョンの Python に随時切り替えて開発することができます.
(3) M1 Mac では Minforge を利用すると Python の仮想環境を構築することができるとともに,TensorFlow で GPU を使った高速な演算もできるようになります.
Anaconda はオリジナルサイト (https://www.anaconda.com/products/individual)からダウンロードしてインストールします.2022年3月時点での最新版は Anaconda3-2021.11-MacOSX-x86_64.pkg です.ダウンロードしたインストーラを起動し,「続ける」をクリックして順に進めるとインストールが完了します.
ここでは,Intel Mac に pyenv をインストールする方法について説明します.なお macOS Big Sur バージョン 11.6 で作業した例です.
まず,ターミナル(または iTerm など)を起動し,ここを参考に Homebrew をインストールします.
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ⏎
次に,ホームディレクトリにある .zshrc に次のような内容を追記します.
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
.zshrc の編集ができれば,この設定が有効になるように次のコマンドを入力するか,ターミナルを再起動します.
% source ~/.zshrc ⏎
Homebrew を使って pyenv をインストールします.
% brew search pyenv ⏎ # 検索する % brew install pyenv ⏎ # インストールする
pyenv を使ってイントール可能な Python (あるいは Anaconda)のバージョンを検索します.
% pyenv install --list ⏎ # 検索結果をすべて表示 % pyenv install --list | grep anaconda ⏎ # 検索結果から anaconda だけを抽出
検索結果から anaconda の最新版 (anaconda3-2021.11) をインストールします.
% pyenv install anaconda3-2021.11 ⏎
インストールされている Python の仮想環境は pyenv versions
で確認できます.この結果,2種類の仮想環境がインストール済みで,「*」印の付いた system が選択されていることがわかります.
% pyenv versions ⏎
* system (set by /Users/username/.pyenv/version)
anaconda3-2021.11
Python へのパスと Python のバージョンを確認します.まだ標準のバージョン 2.7.16 であることがわかります.
% which python ⏎ /Users/username/.pyenv/shims/python % python --version ⏎ Python 2.7.16
pyenv global
で仮想環境を切り替えます.
% pyenv global anaconda3-2021.11 ⏎
もう一度,pyenv versions
で仮想環境の一覧を表示すると anaconda3-2021.11 に切り替わっていることが確認できます.なお,pyenv vesion
では選択されている仮想環境が表示されます.
% pyenv versions ⏎ system * anaconda3-2021.11 (set by /Users/username/.pyenv/version) % pyenv version ⏎ anaconda3-2021.11 (set by /Users/username/.pyenv/version)
Python へのパスをバージョンを確認すると,バージョン 3.9.7 であることがわかります.
% which python ⏎ /Users/username/.pyenv/shims/python % python --version ⏎ Python 3.9.7 %
M1 Mac では Anaconda をインストールできますが,import tensorflow as tf
を実行すると「Kernel Restarting: The kernel appears to have died. It will restart automatically.」と表示され,TensorFlow が動作しないという問題が発生してしまいます(それ以外の問題はほとんどなさそうでしたが).また,pyenv も M1 Mac には対応していない様子です.
ここでは,M1 Mac に Minforge をインストールして,TensorFlow も利用できる環境を構築します.なお,macOS Big Sur 11.6 で Python 3.8 と Python 3.9 の2種類の環境を構築します.Python 3.8 と tensorflow-deps 2.5.0 を使えばニューラルネットワークの演算で GPU を利用できます.Python 3.9 と tensorflow 2.7.0 では CPU での演算になります.
まず,xcode-select, brew, wget がそれぞれインストールされていることをターミナル(または iTerm など)確認します.
% xcode-select -v ⏎ xcode-select version 2384. % brew -v ⏎ Homebrew 3.4.2 Homebrew/homebrew-core (git revision 2bb93b970fc; last commit 2022-03-17) Homebrew/homebrew-cask (git revision ed1d0086b2; last commit 2022-03-18) % wget --version ⏎ GNU Wget 1.21.3 built on darwin20.6.0.
xcode-select がインストールされていない場合は,次のコマンドでインストールします.
% xcode-select --install ⏎
brew がなければ,ここを参考に Homebrew をインストールします.
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ⏎
なお,brew のインストール後にパスを通す必要があるかもしれません.上の install.sh コマンドを実行したときに表示されるメッセージに注意してください.次のコマンドでパスを通します(ただし「ユーザ名」はご自身の環境に合わせて置き換えてください).
% echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/ユーザ名/.zprofile ⏎ % eval "$(/opt/homebrew/bin/brew shellenv)" ⏎
その後,ターミナルを再起動するか,次のコマンドを入力して .zshrc を読み込んでください.
% source ~/.zshrc ⏎
wget がなければ brew を使ってインストールします.
% brew install wget ⏎
次に,Miniforge3 のサイトから OS X 用の arm64 (Apple Silicon) アーキテクチャ (Minforge3-MacOSX-arm64.sh) を wget でダウンロードして実行します.なお,Web ブラウザでダウンロードしたファイルを適当なフォルダに保存して作業しても構いません.
% wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh ⏎ % bash Miniforge3-MacOSX-arm64.sh ⏎
なお,Minforge3 のインストール後はターミナルを再起動するか,次のコマンドを入力して .zshrc を読み込んでください.
% source ~/.zshrc ⏎
次に,conda create
コマンドを使って,Python 3.8 をインストールします.このとき python=3.8
を省略すると最新版(2022年3月では 3.9)がインストールされてしまうので注意が必要です.また,-n 仮想環境名
には適当な名称を付けると良いでしょう.例えばPython 3.8 と TensorFlow 2.5 がわかるような名称にしています.なお,この方法でインストールされる TensorFlow では演算に GPU が利用できます.
% conda create -n py38tf25 python=3.8 ⏎
インストールされている仮想環境の一覧は conda env list
で確認できます.現在は「*」印の付いた base が選択されていることがわかります.
% conda env list ⏎
# conda environments:
#
base * /Users/username/miniforge3
py38tf25 /Users/username/miniforge3/envs/py38tf25
Python のパスをバージョンを確認します.バージョンは 3.9.10 になっています.
% which python ⏎ /Users/username/miniforge3/bin/python % python --version ⏎ Python 3.9.10
仮想環境を切り替えるには次のようなコマンドを入力します.
% conda activate py38tf25 ⏎
仮想環境が切り替わり,バージョン 3.8.12 になっていることもわかりました.
% conda env list ⏎ # conda environments: # base /Users/rinsaka/miniforge3 py38tf25 * /Users/rinsaka/miniforge3/envs/py38tf25 % which python ⏎ /Users/rinsaka/miniforge3/envs/py38tf25/bin/python % python --version ⏎ Python 3.8.12
次に TensorFlow をインストールします.このとき,バージョンを 2.5.0 にしなければ 2022年3月時点では動作しませんでした.
% conda install -c apple tensorflow-deps==2.5.0 ⏎ % python -m pip install tensorflow-macos==2.5.0 ⏎ % python -m pip install tensorflow-metal==0.1.2 ⏎
TensorFlow 以外でも利用しそうなライブラリをインストールしておきます.
% conda install matplotlib ⏎ % conda install opencv ⏎ % conda install pandas ⏎ % conda install scikit-learn ⏎ % conda install jupyter ⏎ % conda install jupyterlab ⏎
Jupyter notebook を使って,Tensorflow をインポートしてみます.正しく動作していることがわかります.実際にニューラルネットワークの計算などを実施するとGPUで計算されていることがわかるはずです.
% jupyter notebook ⏎
Jupyter lab でも同じように操作できます.私はこれまで Visual Studio Code と Jupyter notebook を主に使っていましたが,Jupyter lab も便利そうです.
% jupyter lab ⏎
なお,作成した仮想環境を削除したい場合は,conda deactivate
でその仮想環境から抜けた後に,conda remove
で削除できます.
% conda deactivate ⏎ % conda remove -n py38tf25 --all ⏎
次に,conda create
コマンドを使って,Python 3.9 でのもう一つの仮想環境インストールします.なお,この方法でインストールされる TensorFlow では演算に CPU が利用されます.
% conda create -n py39tf27 python=3.9 ⏎
インストールされている仮想環境の一覧は conda env list
で確認できます.現在は「*」印の付いた base が選択されていることがわかります.
% conda env list ⏎
base * /Users/rinsaka/miniforge3
py38tf25 /Users/rinsaka/miniforge3/envs/py38tf25
py39tf27 /Users/rinsaka/miniforge3/envs/py39tf27
仮想環境を切り替えるには次のようなコマンドを入力します.
% conda activate py39tf27 ⏎
仮想環境が切り替わり,バージョン 3.9.10 になっていることもわかりました.
% conda env list ⏎ # conda environments: # base /Users/rinsaka/miniforge3 py38tf25 /Users/rinsaka/miniforge3/envs/py38tf25 py39tf27 * /Users/rinsaka/miniforge3/envs/py39tf27 % which python ⏎ /Users/rinsaka/miniforge3/envs/py39tf27/bin/python % python --version ⏎ Python 3.9.10
必要なライブラリをインストールしておきます.なお,-y
オプションを指定することで,確認作業をスキップしてインストールできます.
% conda install -y numpy ⏎ % conda install -y matplotlib ⏎ % conda install -y pandas ⏎ % conda install -y seaborn ⏎ % conda install -y keras ⏎ % conda install -y tensorflow ⏎ % conda install -y scikit-learn ⏎ % conda install -y jupyter ⏎ % conda install -y jupyterlab ⏎
Jupyter notebook や Jupyter lab で次のコードが動作すれば OK です.
import tensorflow as tf
print(tf.__version__)