0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M1macでのPython環境にうんざりしちゃったので再環境構築した

Last updated at Posted at 2022-04-29

現行販売されているMacがM1プロセッサーに置き換わり、対応するアプリはとても早くて満足なのですが、開発環境の構築などは、ライブラリが対応していないなど、引っかかることが多いです。
(研究室や職場で仕方なくM1使ってて、苦労している方もいるのではないでしょうか。)

今回は、M1のMacbookで、『Intel MacのPython環境』を再現してみたのでやり方を残しておきます。

大事なデータを削除してしまう可能性があります。
TimeMachineでのバックアップなど、十分な対策の上、自己責任で行ってください。

(Intel版)Homebrewのインストール

環境構築には必須なので、一番最初に入れます。
arch -x86_64を先頭に付けることで、Intel用がインストールされます。

bash
$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 

既にM1用のHomebrewをインストールしている方も、現時点でM1用は削除せずに上記のコマンドを実行してください。

iTerm2のダウンロード

Intel用のiTerm2をインストールしてきます。

bash
$ arch -x86_64 /usr/local/bin/brew install iterm2 --cask

既にiTerm2をインストールしている方は、アプリ側でRosetta2を使用するように設定をしてください。
以下の記事がとても参考になります。
Appleシリコン搭載のMacターミナルでRosettaを使用する方法
※Mac純正のTerminalについて解説されてますが、iTerm2でもできます。

ログインシェルの確認

M1のHomebrewでインストールしたBashを使用していた人は、Intel版に変更します。

bash
# ログインシェルの確認
$ 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再起動)し、以下のコマンドの結果を確認してください。

bash
$ uname -m
> x86_64 # Rosetta2上で動いている場合
> arm64  # m1ネイティブで動いている場合 

x86_64と表示されればOKです。

PATHの追加(変更)

~/.bashrc
## 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

brewmbrewの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をリセットしてみてください。

~/.bashrc
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
で環境の情報を保存しておくことをオススメします。

bash
# 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のアプリは削除してしまいました。

bash
$ 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

大変参考になりました。ありがとうございました。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?