現行販売されているMacがM1プロセッサーに置き換わり、対応するアプリはとても早くて満足なのですが、開発環境の構築などは、ライブラリが対応していないなど、引っかかることが多いです。
(研究室や職場で仕方なくM1使ってて、苦労している方もいるのではないでしょうか。)
今回は、M1のMacbookで、『Intel MacのPython環境』を再現してみたのでやり方を残しておきます。
大事なデータを削除してしまう可能性があります。
TimeMachineでのバックアップなど、十分な対策の上、自己責任で行ってください。
(Intel版)Homebrewのインストール
環境構築には必須なので、一番最初に入れます。
arch -x86_64
を先頭に付けることで、Intel用がインストールされます。
$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
既にM1用のHomebrewをインストールしている方も、現時点でM1用は削除せずに上記のコマンドを実行してください。
iTerm2のダウンロード
Intel用のiTerm2をインストールしてきます。
$ arch -x86_64 /usr/local/bin/brew install iterm2 --cask
既にiTerm2をインストールしている方は、アプリ側でRosetta2を使用するように設定をしてください。
以下の記事がとても参考になります。
Appleシリコン搭載のMacターミナルでRosettaを使用する方法
※Mac純正のTerminalについて解説されてますが、iTerm2でもできます。
ログインシェルの確認
M1のHomebrewでインストールしたBashを使用していた人は、Intel版に変更します。
# ログインシェルの確認
$ echo $SHELL
> /opt/homebrew/bin/bash
# bashのインストール
$ arch -x86_64 brew install bash
# シェル一覧に追加
$ sudo vim /etc/shells
→ /usr/local/bin/bash
を末尾に追加
# 保存後、ログインシェルの変更
$ chsh -s /usr/local/bin/bash
再起動すると、ログインシェルが変わっているはずです。
iTerm2上でRosetta2を確認
iTerm2を起動(or再起動)し、以下のコマンドの結果を確認してください。
$ uname -m
> x86_64 # Rosetta2上で動いている場合
> arm64 # m1ネイティブで動いている場合
x86_64
と表示されればOKです。
PATHの追加(変更)
## M1 Homebrewを使っていた方はコメントアウト
# export PATH=/opt/homebrew/bin:$PATH
## 追加
export PATH=/usr/local/bin:$PATH
### aliasで使い分けます
alias brew=/usr/local/bin/brew # Intel用のHomebrew
alias mbrew=/opt/homebrew/bin/brew # M1用のHomebrew
brew
とmbrew
のaliasを付けることで、M1用のHomebrewでインストールしたいCaskアプリなど、使い分けることができます。
M1用Homebrewを使いたい際は、mbrew install app_name --cask
などで使用してください。
保存後、source ~/.bashrc
し、which brew
で> /usr/local/bin/brew
と表示されるか確認してみてください。
PATHの変更後もbrew
が/opt/homebrew/bin/brew
になっている場合は、PATHに/opt/homebrew/bin
が残っていることが考えられます。
~/.bashrc
内にexport PATH=""
以下を追加して、PATHをリセットしてみてください。
export PATH="" # 追加
# PATHの追加をするところ
export PATH=/usr/local/bin:$PATH
...
miniforge3のインストール
Python環境を作っていきます。
既にM1用のminiforgeをインストールしている方は、rm -r ~/miniforge3
などで削除してください。
削除の前に、保存したい環境は
conda env export -n [env_name] > env_name.yml
で環境の情報を保存しておくことをオススメします。
# Intel版、miniforge3のインストール
$ brew install wget
$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-x86_64.sh
$ bash Miniforge3-MacOSX-x86_64.sh
(任意)M1用のHomebrew内の整理
無事、Intel用のHomebrewをインストールできたことですが、私はM1用Homebrewを削除せず、以下の運用をしています。
- Formulaeなど、Terminal上で動かすアプリはM1用でインストール
- CaskなどのGUIアプリはM1用でインストール
そのため、M1用で使っていたFormulaeのアプリは削除してしまいました。
$ mbrew list
> (たくさん表示される。)
# 一つ一つ見て、削除して良いか確認するのが良いですが、
# 億劫な人は以下のコマンドで一括削除できます。
$ mbrew remove `mbrew list --formula`
# Formulaは削除され、Caskアプリは残っているはず。
$ mbrew list
完成!
conda create -n test python=3.7
などで、Intel Macとして動くか試してみてください。
※M1用では、condaでpython=3.7がインストールできないので、、、
さいごに
M1用に、色んなライブラリが対応してきているようですが、まだまだ対応していないのが多く、環境構築に手こずってしまうことが多いです。。。
今回の内容は、『応急処置』ですが、現時点ではIntel Macと同じ様に使えているので、
困っている方の参考になれば嬉しいです。
参考URL
https://blog.looseknot.jp/mac/m1mac_terminal_rosetta.html
https://www.task-notes.com/entry/20150117/1421482066
大変参考になりました。ありがとうございました。